В настоящее время я работаю над достаточно простым MVC-приложением, которое позволяет пользователю вводить некоторые данные поиска, получать список результатов, просматривать каждый элемент и т. Д. Все идет хорошо, но теперь я пытаюсь реализовать подкачку но с некоторыми неприятностями.ASP.NET MVC Paging - Передача сложных типов обратно контроллеру?
Моя форма поиска использует HTTP GET, запрашивая следующие действия:
public ActionResult Results(PropertySearchData data, int? page)
{
...
IEnumerable<Property> search = mService.SearchProperties(data);
ViewData["SearchData"] = data;
return View("Results", "Site", search.ToPagedList(page ?? 0, 20));
...
}
Отсюда я построю свою таблицу результатов из IEnumerable коллекции перешла в мой взгляд. Кроме того, я использовал ViewData для хранения параметров поиска, чтобы передать их, когда пользователь запрашивает другую страницу.
Например, чтобы добраться до первой странице, я хотел бы использовать что-то вроде этого:
Html.ActionLink("First", "Results", new { data = ViewData["SearchData"], page = 1 })
Однако, когда эта ссылка генерируется, моя связь по линиям
/Results?data=PropertySearchData&page=1
Если я полностью удаляю параметр «страница» и просто передаю ViewData ["SearchData"] в качестве значения моего маршрута, моя ссылка генерируется так, как мне хотелось бы (т.е. каждый член PropertySearchData передается как строка запроса через функция привязки модели. Я предполагаю, что это связано с тем, что привязка к модели может работать корректно только тогда, когда вы указали один тип?
Я могу видеть несколько причин, почему это не работает; у меня возникают проблемы с разработкой «хорошего» способа сделать то, что я пытаюсь сделать. Я знаю, что здесь мне не хватает жизненно важного понимания, поэтому было бы очень полезно, если я смогу понять, как подойти к этому.
Обратите внимание, что я действительно хочу использовать HTTP GET (видя, что это страница результатов поиска).
Спасибо!
А, это хорошо и аккуратно, спасибо! – CapBBeard