how may i add integer list to route
Asked Answered
R

1

7

I'm trying to add int[] array to my Url.Action something like this:

var routeData = new RouteValueDictionary();

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

in my view:

Url.Action("Index", routeData)

but in html I'm getting:

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

and not:

GroupsId=1213&GroupsId=1214

I need it because I have a checkbox list, and when I do post I'm binding groupIds to int[] and then pass to view where I have export button with Url.Action that doesn't work correctly for me.

Roana answered 18/6, 2011 at 10:13 Comment(0)
S
6

You cannot generate such url using the standard helpers because of the duplicate query string parameter names. It's unfortunate but it is how things are.

Here's what you can instead in order to generate such 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();
Scutate answered 18/6, 2011 at 14:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.