如何更改WebGrid操作以获取数据(.NET MVC3)

a1e*_*x07 5 webgrid asp.net-mvc-3

我有一个呈现WebGrid的部分视图.我的控制器看起来像

public ActionResult Index()
{
    return View();
}
public ActionResult GetUserList(int? page, string sort, string sortdir)
{
    var model = UserModel.getList(page,sort,sortdir);
    return PartialView("_UserList",model);
}
Run Code Online (Sandbox Code Playgroud)

Index.cshtml: 问题是我每次点击网格导航或排序链接时都会调用方法.如何让Webgrid执行不同的操作(在本例中)?我确信我可以使用jquery在网格中添加所有链接,但我相信它应该是更好的方法. 我正在做的事情也可能是完全错误的,所以感谢您的建议.
....
@Html.Action("GetUserList")

IndexGetUserListGetUserList

Mrc*_*ief 5

经过大量的讨论和挖掘(甚至用WebGrid的源代码摆弄Reflector),我得出的结论是,使用WebGrid,您无法控制/更改Header链接操作.

要创建标题链接URL,将从中获取路径HttpContext.Request.Path,因此无法将其自定义为指向其他路径.

一个非常丑陋的黑客将是利用jQuery Ajax的事件(因为标题链接使用jQuery.load进行排序)并覆盖URL:

<a href="#" onclick="$('#myGrid').load('/?sort=AlbumId&amp;sortdir=ASC&amp;__=634486582282704242 #myGrid');">Album Id</a>
Run Code Online (Sandbox Code Playgroud)

更好的解决方案是使用:

  • Telerik Grid允许您指定自定义路线,并在渲染布局时提供更大的灵活性
  • MvcContrib Grid(不确定这是否允许您修改标题链接但绝对提供比WebGrid更多的灵活性)