В ASP.net MVC:
Как / можно передать данные формы (из представления) в контроллер?
Вот мой путь:
- Функция индекса контроллера передает объект ViewModel в представление.
- Объект ViewModel содержит разбитый на страницы список, а также некоторые списки выбора.
_ Объект ViewModel также содержит пользовательский класс I с именем theFilter. Цель этого класса - хранить информацию фильтра, отправленную из представления через форму.
- Я хочу, чтобы функция Index [AcceptVerbs (HttpVerbs.Post)] получала объектFilter, заполненный данными формы, а также номер страницы (как сейчас)
Вот фрагменты моего кода:
Функция обратной передачи контроллера / индекса:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(int? page, CaseFilter caseFilter)
{
const int pageSize = 10;
var cases = caseRepo.FindAllCases();
var paginatedCases = new PaginatedList<Case>(cases, page ?? 0, pageSize);
return View(new CaseIndexViewModel(paginatedCases, caseFilter));
}
Класс фильтра:
public class CaseFilter
{
int iVolume_id = 0,
iSubject_id = 0;
public CaseFilter() {
}
public int Volume_id { get { return iVolume_id; } set { iVolume_id = value; } }
public int Subject_id { get { return iSubject_id; } set { iSubject_id = value; } }
}
И класс ViewModel:
public class CaseIndexViewModel
{
public PaginatedList<Case> PaginatedCases { get; private set; }
public CaseFilter CaseFilter { get; private set; }
public CaseIndexViewModel(PaginatedList<Case> paginatedCases, CaseFilter caseFilter)
{
PaginatedCases = paginatedCases;
CaseFilter = caseFilter;
}
}
В основном я стараюсь избегать использования Request.Form для заполнения класса Filter, по крайней мере, не использовать его в контроллере.
Любая помощь, предложения или отказ приветствуются!