У меня есть form
с простым списком выбора ванили, который я использую для фильтрации.Проблема с ModelBinding a <int> правильно на RedirectToAction()
Итак, по стандартным конструкциям, я делаю фильтр как операцию GET. Таким образом, форма представить результаты в совершенно приемлемом URL:
http://example.com/Matrix?role=1&role=6&role=2
который прекрасно связывается с roles
аргумента:
[HttpGet]
public virtual ViewResult Matrix(List<int> roles) { ... }
Теперь возвращаемый фильтруются вид содержит форму, которая должна быть post
-й издом к серверу поскольку он содержит моды данных, определенные в CustomViewModel
. Опять же форма помещается на тот же URL и связывание происходит отлично:
[HttpPost]
public virtual ActionResult Matrix(CustomViewModel vm, List<int> roles)
{
...
//Passing the list 'roles' untouched directly to the redirect
//Problem sirens set off!!
return RedirectToAction(MVC.T4Path.To.Matrix(roles));
}
Проблема возникает при попытке выполнить перенаправление. Теперь логически кажется, что это прямая переадресация с roles
, переданная в качестве аргумента для сохранения фильтров. Но запрос полученный GET является:
http://example.com/Matrix?roleSelector=System.Collections.Generic.List%601%5BSystem.Int32%5D
Почему это происходит? Что я могу сделать, чтобы сгенерированный URL-адрес был похож на симпатичный?
Работа, на которой я сейчас использую, заключается в передаче данных с помощью TempData
, но это приводит к исчезновению данных из URL-адреса, и хотя фильтр сохраняется, сама форма пуста/сбрасывается.