2011-06-18 13 views
7

Sto cercando di aggiungere int array [] alla mia Url.Action qualcosa di simile:Come posso aggiungere all'elenco intero a rotta

var routeData = new RouteValueDictionary(); 

for (int i = 0; i < Model.GroupsId.Length; i++) { 
    routeData.Add("GroupsId[" + i + "]", Model.GroupsId[i]); 
} 

a mio avviso:

Url.Action("Index", routeData) 

ma in html sto ottenendo:

GroupsId%5B0%5D=1213&GroupsId%5B0%5D=1214 

e non:

GroupsId=1213&GroupsId=1214 

Mi serve perché ho un elenco di caselle di controllo e quando inserisco sto collegando groupIds a int [] e poi passaggio per visualizzare dove ho il pulsante di esportazione con Url.Action che non funziona correttamente per me .

risposta

6

Non è possibile generare tale url utilizzando gli helper standard a causa dei nomi dei parametri della stringa di query duplicati. È un peccato, ma è così che vanno le cose.

Ecco cosa si può invece al fine di generare tale url:

var baseUrl = Url.Action("Index", "SomeController", null, Request.Url.Scheme); 
var uriBuilder = new UriBuilder(baseUrl); 
uriBuilder.Query = string.Join("&", Model.GroupsId.Select(x => "groupsid=" + x)); 
string url = uriBuilder.ToString(); 
Problemi correlati