У меня следующая проблема: одна из систем, над которой я работаю, - это страница поиска.На этой странице у меня есть несколько вариантов, таких как записи на странице, дата начала, дата окончания и проблемный: тип.Нужно иметь возможность выбрать более одного типа (в большинстве случаев все они будут выбраны).Чтобы это работало, я создал следующее:
<div>
<label>Eventos:</label>
<div>
@Html.ListBox("events", Model.Events, new { style = "width: 100%" })
</div>
</div>
Он создает список, в котором я могу выбрать более одного варианта, и когда форма отправляется, моя строка запроса будет выглядеть так:
/ 5? Period = 9 & events = 1 & events = 3 & recordsPerPage = 10
Там можно увидеть, что два события (это тот тип, о котором я говорил ранее) созданы.Метод действия для этой страницы принимает List<long>
в качестве одного из аргументов, который представляет эти два значения events
.Проблема начинается, когда я хочу использовать это с MVC Contrib.Их пейджер работает просто отлично, но, как мне было предложено, я создал еще один пейджер, который отображает ссылки на пять страниц после и до той, на которой находится пользователь.Для этого в части моего кода я должен сделать следующее (что очень похоже на пейджер MVC Contrib, который работает):
public RouteValueDictionary GetRoute(int page)
{
var routeValues = new RouteValueDictionary();
foreach (var key in Context.Request.QueryString.AllKeys.Where(key => key != null))
{
routeValues[key] = Context.Request.QueryString[key];
}
routeValues["page"] = page;
return routeValues;
}
И затем:
@Html.ActionLink(page.ToString(), action, controller, GetRoute(page), null)
Проблема в том, что это словарь, который заставляет во второй раз, когда я устанавливаю значение для routeValues["events"]
, стереть предыдущий.
Ребята, вы не знаете, как с ним работать?