ASP.NET ViewModel与PagedList

时间:2018-12-08 11:18:33

标签: c# asp.net-mvc razor asp.net-mvc-viewmodel asp.net-mvc-validation

我目前正在开发一个应用程序,该应用程序具有一个列出记录的表。当前,它像这样传递回我的视图:

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)。想知道如何获取回发的表单对象以在视图中进行验证

0 个答案:

没有答案