Asp.net MVC 4.5 PagedList松散过滤器值

时间:2017-03-13 11:04:54

标签: c# asp.net asp.net-mvc asp.net-mvc-4

你好伙伴Stackoverflowers,

我目前正在开发ASP.NET MVC 4.5应用程序。我目前有一个PagedList,我想按日期过滤,在第一次请求时可以正常工作。

我的问题:当我点击分页列表底部的第二页链接时,由于新请求,我正在丢失当前日期。

虽然找到错误有点困难:

我的分页列表链接:

@Html.PagedListPager(Model.OfferList, page => Url.Action("Index", new { page }))

我的搜索表单,指向Home Controller:

@using (Html.BeginForm("Index", "Home"))
{
    @Html.AntiForgeryToken()

    <div class="row">
        <div class="col-xs-12 well text-center">
            <h1>Offer Catalog</h1><br />
            <div class="form-group col-xs-12 col-md-offset-1 col-md-4">
                @Html.LabelFor(model => model.OfferDateSearch.FromDate, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.DatetimePickerFor(model => model.OfferDateSearch.FromDate, new DatePickerOption() { })
                    @Html.ValidationMessageFor(model => model.OfferDateSearch.FromDate, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                <div class="col-xs-12 col-md-1">
                    <button type="submit" class="btn btn-md btn-primary"><i class="fa fa-search" aria-hidden="true"></i> Search</button>
                </div>
            </div>
        </div>
    </div>
}

我的家庭控制器:

public class HomeController : BaseController
{
   ...

    public HomeVm HomeVm { get; set; }

    public HomeController()
    {
        HomeVm = new HomeVm();
        HomeVm.OfferDateSearch = new OfferDateSearchVM();
    }

    public ActionResult Index(HomeVm homeSearchVm, int page = 1)
    {
        // ... here I'm loosing my From Date, when clicking on 2nd page link
        if (homeSearchVm.OfferDateSearch != null)
        {
            HomeVm.OfferDateSearch.FromDate = homeSearchVm.OfferDateSearch.FromDate;
        }
        else
        {
            HomeVm.OfferDateSearch.FromDate = DateTime.Now;
        }

        //HomeVm.OfferList = OfferService.GetOfferList(page);

        return View(HomeVm);
    }
}

...和我的Home ViewModel类:

public class HomeVm
{
    public HomeVm()
    {
        OfferListName = new OfferListVM();
    }
    public IPagedList<OfferListVM> OfferList { get; set; }
    public OfferDateSearchVM OfferDateSearch { get; set; }
}

..以及日期vm:

public class OfferDateSearchVM
{
    [Required]
    [Display(Name = "From")]
    public DateTime FromDate { get; set; }

}

非常感谢帮助!谢谢!

0 个答案:

没有答案