我有一个渲染WebGrid的局部 View 。我的 Controller 看起来像
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);
}
Index.cshtml:
....
@Html.Action("GetUserList")
问题是,每次我单击网格导航或排序链接时,它都会调用Index
方法。如何使Webgrid执行其他操作(在这种情况下为GetUserList
)?我敢肯定,我可以使用jQuery将GetUserList
前缀添加到网格中的所有链接上,但是我认为这应该是一种更好的方法。我所做的事情也有可能是完全错误的,因此感谢您的建议。
最佳答案
经过大量的探索和挖掘(甚至不喜欢Reflector与WebGrid的源代码),我得出的结论是,使用WebGrid,您无法控制/更改Header链接操作。
要创建标题链接URL,该路径取自HttpContext.Request.Path
,因此无法自定义它以指向其他路由。
一种非常丑陋的破解方法是利用jQuery Ajax的事件(因为标题链接使用jQuery.load进行排序)并覆盖URL:
<a href="#" onclick="$('#myGrid').load('/?sort=AlbumId&sortdir=ASC&__=634486582282704242 #myGrid');">Album Id</a>
更好的解决方案是使用:
关于asp.net-mvc-3 - 如何更改WebGrid操作以获取数据(.NET MVC3),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5968169/