操作说明:请跳转到最后一页,选中最后一页上所有项的复选框,然后点击“删除选中项”按钮,此时最后一页的所有数据都会被删除,虽然url中的当前页索引未改变,但Model中PagedList对象的CurrentPageIndex已自动变为最后一页的页索引2,同时显示的数据也是最后一页的数据,不会出现空数据或页索引超出范围的错误。
操作说明:请跳转到最后一页,选中最后一页上所有项的复选框,然后点击“删除选中项”按钮,此时最后一页的所有数据都会被删除,虽然url中的当前页索引未改变,但Model中PagedList对象的CurrentPageIndex已自动变为最后一页的页索引2,同时显示的数据也是最后一页的数据,不会出现空数据或页索引超出范围的错误。
@model PagedList<int> @using (Html.BeginForm()) { <table width="90%"><tr><th>值</th><th>删除</th></tr> @foreach (var itm in Model) { <tr><td>@itm</td><td><input type="checkbox" name="val" value="@itm" /></td></tr> } </table> <div><span style="float:right"><input type="submit" value="重置测试(R)" name="resetList" /></span><input type="submit" value="删除选中项(D)" accesskey="D" /> 当前页索引为:@Model.CurrentPageIndex</div> } @Html.Pager(Model,new PagerOptions{PageIndexParameterName = "id"})
public ActionResult Delete(int id = 1) { List<int> list = HttpContext.Cache["TestList"] as List<int>; if (list == null) { list = Enumerable.Range(1, 12).ToList(); HttpContext.Cache["TestList"] = list; } return View(list.ToPagedList(id, 5)); } [HttpPost] public ActionResult Delete(int id, FormCollection values) { if (values["resetList"] != null) { HttpContext.Cache.Remove("TestList"); return RedirectToAction("Delete"); } var list = HttpContext.Cache["TestList"] as List<int>; if (list == null) throw new ApplicationException("无法获取缓存的测试数据,请刷新重试"); int[] delItems = Array.ConvertAll(values["val"].Split(','), i => int.Parse(i)); list.RemoveAll(delItems.Contains); HttpContext.Cache["TestList"] = list; return View(list.ToPagedList(id, 5)); }