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
}