0

J'ai une forme qui publie plusieurs éléments tels que nommés à une action comme ceci:Problème chaîne redirection []

<%= Html.TextBox("foo") %> 
<%= Html.TextBox("foo") %> 
<%= Html.TextBox("foo") %> 

messages à et retours:

public ActionResult GetValues(string[] foo) 
{ 
    //code 

    return RedirectToAction("Results", new { foo = foo }) 
} 

l'action « Résultats » puis regards comme ceci:

public ActionResult Results(string[] foo) 
{ 
    //code 

    return View() 
} 

la question que je vais avoir est que, après la Réexpédier mon URL ressemble à ceci:

/results?foo=System.String[] 

au lieu du prévu:

/results?foo=value&foo=value&foo=value 

Est-il possible d'obtenir que cela fonctionne avec mon set-up actuel?

Répondre

0

Je n'ai pas trouvé de solution pour travailler avec le code ci-dessus. Ce que j'ai fini par faire était de prendre le tableau/Enumerable, en le bouclant, et en construisant une chaîne de requête à passer avec la redirection. Quelque chose le long des lignes de:

StringBuilder queryString = new StringBuilder(); 
for (int i = 1; i <= foo.Count(), i++) 
{ 
    if (i == 1) 
     queryString.Append("?foo=" + value); 
    else 
     queryString.Append("&foo=" + value); 
} 

Cela est beaucoup plus simple que le code que je fini par utiliser, mais il m'a aussi permis de laisser tomber les valeurs nulles qui peuvent être soumises à la forme. Nettoie un peu les choses.

0

Essayez de changer le type de paramètre string[]-IEnumerable<string>:

public ActionResult GetValues(IEnumerable<string> foo) { ... } 

Si vous avez encore des problèmes, sur votre formulaire faire quelque chose comme:

<%= Html.TextBox("foo[0]") %> 
<%= Html.TextBox("foo[1]") %> 
<%= Html.TextBox("foo[2]") %> 

Cela devrait le faire.

+0

Désolé pour la réponse différée ... Cela n'a pas aidé. Et juste pour clarifier, je n'ai aucun problème pour obtenir les valeurs de formulaire à lier à une chaîne [] ou IEnumerable ... Je rencontre des problèmes lorsque j'appelle RedirectToAction et lui transmets la chaîne [] ou IEnumerable. –