ASP.NET ViewModel путаница с PagedList
В настоящее время я разрабатываю приложение, в котором есть таблица со списком записей. В настоящее время это передается обратно в мой вид следующим образом:
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")
Я запутался в том, как все это связано, когда дело доходит до отображения сообщения об ошибке валидации. Это правильный способ выполнить проверку? Как бы я вывел Helper для метода проверки в представлении, учитывая, что модель уже связана с IEnumerable в представлении. Должен ли я передать ViewModel обратно как объект ViewBag или что-то?
Как правило, я просто не понимаю, как получить отфильтрованный список и опубликованные сообщения, чтобы связать их вместе и заставить.NET выполнить проверку для меня.
Html. ValidationMessageFor
в данный момент отсутствует на странице, потому что я не совсем уверен, как она будет вписываться в головоломку, но это выглядит как правильный метод для использования.
TLDR:
1). Хотите знать, как использовать PagedList с ViewModel
2). Хотите знать, как получить отправленный объект обратной формы для проверки в представлении