Как я могу добавить список целых к маршруту - PullRequest
7 голосов
/ 18 июня 2011

Я пытаюсь добавить массив int [] в свой Url.Action примерно так:

var routeData = new RouteValueDictionary();

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

на мой взгляд:

Url.Action("Index", routeData)

но в HTML яполучить:

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

, а не:

GroupsId=1213&GroupsId=1214

Мне это нужно, потому что у меня есть список флажков, и когда я делаю пост, я связываю groupIds с int [], а затем передаючтобы посмотреть, где у меня есть кнопка экспорта с Url.Action, которая не работает правильно для меня.

1 Ответ

6 голосов
/ 18 июня 2011

Вы не можете сгенерировать такой URL с помощью стандартных помощников из-за повторяющихся имен параметров строки запроса.Это печально, но так обстоят дела.

Вот что вы можете вместо этого создать такой 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();
...