开发者

how may i add integer list to route

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:

Grou开发者_如何学运维psId=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.


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();
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜