Asp.net MVC WebGrid中第2页的URL

本文关键字:2页 URL 中第 WebGrid net MVC Asp | 更新日期: 2023-09-27 18:18:00

我正在与Asp合作。Net MVC WebGrid。我的网格是通过局部视图的ajax调用出现的。因此分页不起作用。每当我点击第二页,整个页面刷新,url变成

    http://localhost:2429/mvc/SSP/Home/SearchQuery?page=2

显然没有找到(404)。我认为Webgrid分页不适用于局部视图。因此,我决定对每个页面链接进行jquery ajax调用。为此,我需要一个url,可以从Webgrid中提取第二页的数据。

那么,有没有办法找到webgrid第二页的url,以便我可以从webgrid中提取数据并显示在第二页上

Asp.net MVC WebGrid中第2页的URL

我想你需要这个,

对于分页,您可以使用MVC4.Paging。

@Html.Raw(Ajax.Pager(
       new Options
       {
           PageSize = Model.PageSize,
           TotalItemCount = Model.TotalItemCount,
           CurrentPage = Model.PageNumber,
           ItemTexts = new ItemTexts() { Next = "Next", Previous = "Previous", Page = "P" },
           ItemIcon = new ItemIcon() { First = "icon-backward", Previous = "icon-chevron-left", Next = "icon-chevron-right", Last = "icon-forward" },
           TooltipTitles = new TooltipTitles() { Next = "Next page", Previous = "Previous page", Page = "Go to page {0}.", First = "Go To First Page", Last = "Go To Last Page" },
           Size = Size.normal,
           Alignment = Alignment.centered,
           IsShowControls = true,
           IsShowFirstLast = true
       },
       new AjaxOptions
       {
           UpdateTargetId = "grid-list",
           OnBegin = "beginPaging",
           OnSuccess = "successPaging",
           OnFailure = "failurePaging"
       }, new { controller = "Home", action = "Index", employee_name = ViewData["employee_name"] }))

ref: http://mvcpaging.apphb.com/

我已经实现了&它的工作原理!

在示例中提到了不回发的分页。

安装完nuGet包后,

当你把你的模型传递回View或PartialView时,你需要使用ToPagedList来转换它

myModel = myModel.ToPagedList(currentPageIndex,rowSize);
上面的

代码会为你创造奇迹!

但是如果您想在AJAX调用后更改URL,则需要付出更多的额外努力。

ref:如何改变一个ajax请求后的URL ?

还必须使用基于Ajax的分页来设计网格。现在您正在为分页呈现锚标记,这将导致整个页面加载。

有网格控件支持这个开箱即用。一个很好的例子是Telerik Kendo网格

这篇文章可能会对你有所帮助

http://msdn.microsoft.com/en-us/magazine/hh288075.aspx

这并不像将页码传递给网格那么简单,您需要将PageSize和PageNumber存储为模型的一部分。然后从视图中调用Bind方法。

个人在过去,我已经创建了我自己的分页助手,所以在控制器你传入(PageSize, TotalCount, CurrentPage),并从这你带回你的数据的一个子集。这也可以防止控制器先返回所有数据,然后对其进行分页,这对于大数据集来说不是很有效。

编辑

我找到的另一篇文章解释了我上面所说的(第二部分)。

http://www.dotnetcurry.com/ShowArticle.aspx?ID=615

当你使用MVC WebGrid时,没有数据的自动分页。您在webgrid中看到的分页用于自定义分页,这意味着您必须自己处理它。webgrid所做的只是将一个页码作为参数发送给actionresult,然后使用该页码抓取并返回与该页码相关的数据集(即列表)。Skip (pagesize * pagenumber).take(pagesize))。

如果你看看webgrid是如何生成的,你会注意到grid.GetHtml返回一个IHtmlString

你可以把它转换成一个字符串并替换你想替换的任何东西。在您的示例中,您希望替换分页url。

var html = grid.GetHtml(...).ToHtmlString().Replace("home/index?page", "home/MyPartialGrid?page");

然后您可以创建MvcHtmlString的新实例来生成网格。


var htmlString = new MvcHtmlString(html);

<div id="myPartialGrid">
    @htmlString
</div>