在 ASP.net MVC 中:
我应该/我如何将表单数据(从视图)传递给控制器?
这是我前进的方向:
- Controller Index 函数将 ViewModel 对象传递给 View。
- ViewModel 对象包含一个分页列表以及一些 SelectLists。_ ViewModel 对象还包含一个我命名为 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 类,至少不要在 Controller 中使用它。
欢迎任何帮助,建议或disses!