【发布时间】:2014-08-19 12:02:35
【问题描述】:
当我按放置日期过滤数据库中的记录时,我希望能够跨多个页面浏览过滤后的记录。现在,当我尝试转到过滤记录的第 2 页时,我收到错误:
字符串引用未设置为字符串的实例。 参数名称:s`
另外,我注意到在 url 中传递的参数发生了变化。例如:
/PurchaseOrder?searchBy=Date&dateSearchBegin=08%2F15%2F2014&dateSearchEnd=09%2F01%2F2014&dateOrderedBegin=&dateOrderedEnd=&search=
当我点击第 2 页时变为:
/PurchaseOrder?page=2&searchBy=Date
由于它目前是在我的代码中编写的,因此我正在使用Request.QueryString 方法来尝试维护 URL,但它不适用于日期。有没有类似的方法可以用来修复这个错误并达到我想要的结果?
这是我的控制器和视图代码:
控制器:
else if (searchBy == "Date")
{
if (dateSearchBegin == "" || dateSearchEnd == "")
{
//string message = "Both date fields are required";
}
else
{
var dtFrom = DateTime.Parse(dateSearchBegin);
var dtTo = DateTime.Parse(dateSearchEnd);
return View(db.PurchaseOrders.Where(x => x.Date >= dtFrom && x.Date <= dtTo).OrderBy(i => i.Date).ToPagedList(page ?? 1, 15));
}
}
else if (searchBy == "dateOrder")
{
if (dateOrderedBegin== ""|| dateOrderedEnd == "")
{
//string message = "Both date fields are required";
}
else
{
var dtFrom = DateTime.Parse(dateOrderedBegin);
var dtTo = DateTime.Parse(dateOrderedEnd);
return View(db.PurchaseOrders.Where(x => x.DateOrdered >= dtFrom && x.DateOrdered <= dtTo).OrderBy(i => i.Date).ToPagedList(page ?? 1, 15));
}
}
查看:
@Html.PagedListPager(
Model, page => Url.Action("Index",
new { page, searchBy = Request.QueryString["searchBy"],
search = Request.QueryString["search"],
dtFrom = Request.QueryString["dtFrom"],
dtTo = Request.QueryString["dtTo"] }),
new PagedListRenderOptions() { DisplayPageCountAndCurrentLocation = true,
DisplayItemSliceAndTotal = true })
【问题讨论】:
标签: asp.net-mvc paging pagedlist