我目前正在开发一个应用程序,该应用程序具有一个列出记录的表。当前,它像这样传递回我的视图:
public ViewResult Index(FilteredViewModel viewModel, int? page )
{
...grabrecords..
return View(MyList.ToPagedList(pageNumber, pageSize));
}
PagedList是一个IEnumerable,我循环遍历以创建记录表。在我的视图顶部,我有这个:
@model PagedList.IPagedList<Models.MyViewItem>
这一切都很好,我这样输出表行:
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.SiteOrderID)
}
现在,我希望用StartDate和EndDate过滤我的表,验证这两个字段是否有效,过滤我的结果,然后传递回视图。
我的模型定义接受ViewModel。
public ViewResult Index(FilteredViewModel viewModel, int? page )
和ViewModel看起来像:
public class FilteredViewModel
{
[Display(Name = "StartDate")]
[Required(ErrorMessage = "Please enter a start date")]
[DataType(DataType.Date)]
public DateTime StartDate { get; set; }
}
我的表单在页面上,并以相同的方法发布。 (是对还是错?)
@using (Html.BeginForm("Index", "Item", FormMethod.Post, new { id = "filterForm", @class = "" }))
{
<div class="filter-container clearfix">
<div class="filter-left">
<div class="inline-item filter-start-date">
@Html.TextBox("StartDate")
当显示验证错误消息时,我对所有这些如何联系感到困惑。这是执行验证的正确方法吗?给定模型已经在视图中绑定到IEnumerable的情况下,如何在视图中输出用于验证方法的Helper。我应该将ViewModel作为ViewBag对象传递回去吗?
通常,我只是对如何获取分页列表和过滤后的发布以将其绑定在一起并让.NET为我执行验证感到困惑。
Html. ValidationMessageFor
目前不在页面上,因为我不太确定如何将其放入拼图中,但这看起来像是正确使用的方法。
TLDR:
1)。想知道如何在ViewModel中使用PagedList
2)。想知道如何获取回发的表单对象以在视图中进行验证