PagedListPager如何解释日期参数,因为它似乎将01/04/2003
一个寻呼机项目视为 2003 年 4 月 1 日,而将另一个寻呼机项目视为 2003 年 1 月 4 日。
在我的剃须刀标记中,我显示了 2 个文本框以允许用户选择报告的开始日期和结束日期,我在底部放置了寻呼机,以允许用户浏览结果。现在奇怪的是,如果我输入诸如 2003 年 4 月 1 日之类的日期并返回我的结果,则底部的寻呼机将在寻呼到其他页面之一时将日期设置为 1 月 4 日。但是,一旦打开,例如第 2 页,情况正好相反。它将需要 1 月 4 日并将其转换为 4 月 1 日...?我只需要在这里保持一致 - 但实际上对英国日期格式进行硬编码没有问题。
<label for="StartDate">Start Date: </label>
<input type="text" class="datepicker" id="StartDate" name="StartDate"
value="@ViewBag.StartDate" />
<label for="EndDate">End Date:</label>
<input type="text" class="datepicker" id="EndDate" name="EndDate"
value="@ViewBag.EndDate" />
ViewBag 在那里,因此在结果之间进行分页时输入的值保持不变,并且 PagedListPager 使用相同的值
@Html.PagedListPager(@Model, page => Url.Action("ReadyBox",
new { page = page,
sortOrder = ViewBag.CurrentSort,
startDate = ViewBag.StartDate,
endDate = ViewBag.EndDate }),
PagedListRenderOptions.ClassicPlusFirstAndLast)
这个控制器是
public ActionResult ReadyBox(string sortOrder, int? page,
DateTime? startDate, DateTime? endDate)
{
ViewBag.CurrentSort = sortOrder;
ViewBag.NameSortParam = string.IsNullOrWhiteSpace(sortOrder) ? "Name desc" : "";
ViewBag.DateSortParam = sortOrder == "Date" ? "Date desc" : "Date";
int pageNumber = page ?? 1;
if (startDate == null)
startDate = DateTime.Now.AddMonths(-1);
if (endDate == null)
endDate = DateTime.Now;
ViewBag.StartDate = ((DateTime)startDate).ToShortDateString();
ViewBag.EndDate = ((DateTime)endDate).ToShortDateString();
// rest of the controller
}