我正在研究MVC 4项目。 我所做的是在我的视图中提供了 Ajax Action Link 。
@Ajax.ActionLink("Display All Resources", "Resources", "Resources", null, new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "showAllResources"});
在那个动作链接上,我渲染了一个部分视图,它将显示数据库中的表格。
showAllResources 是一个div,我将在其中显示部分视图。
在部分视图中,我提供了3种不同的 Ajax操作链接,以排序数据。
<th>
@Ajax.ActionLink("First Name", "Resources", new { sortOrder = ViewBag.FirstNameSort }, new AjaxOptions { HttpMethod="GET"})
</th>
<th>
@Ajax.ActionLink("Last Name", "Resources", new { sortOrder = ViewBag.LastNameSort }, new AjaxOptions { HttpMethod = "GET" })
</th>
<th>
@Ajax.ActionLink("Release Date", "Resources", new { sortOrder = ViewBag.ReleasedDateSrot }, new AjaxOptions { HttpMethod = "GET" })
</th>
这是控制器动作方法中的代码
[OutputCache(NoStore=true,Duration=0,VaryByParam="*")]
public ActionResult Resources(string sortOrder)
{
ViewBag.FirstNameSort = String.IsNullOrEmpty(sortOrder)?"name_desc":"";
ViewBag.LastNameSort = String.IsNullOrEmpty(sortOrder) ? "lname_desc" : "";
ViewBag.ReleasedDateSrot = sortOrder == "Date" ? "date_desc" : "Date";
if(Request.IsAjaxRequest())
{
var tblUser = from s in rosterManagementContext.tblUsers
select s;
switch (sortOrder)
{
case "name_desc":
tblUser = tblUser.OrderByDescending(a => a.FirstName);
break;
case "lname_desc":
tblUser = tblUser.OrderByDescending(a => a.LastName);
break;
case "date_desc":
tblUser = tblUser.OrderByDescending(a => a.ReleaseDate);
break;
default:
tblUser = tblUser.OrderBy(a => a.FirstName);
break;
}
return PartialView("_DisplayResources", tblUser.ToList());
}
LookupTblUserListViewModel wrapperViewModel = Helpers.ConfigureWrapperViewModel();
return View(wrapperViewModel);
}
当用户点击显示所有资源链接switch
案例转到default
并根据 FirstName 列对列表进行排序时,会发生什么情况。
但是当用户点击其他链接(例如 ReleaseDate 或 LastName )对该列的数据进行排序时,它不会以排序格式显示数据,但会显示排序数据取决于列 调试器。
我已按照this链接了解有关在MVC中对分页和过滤进行排序
我错过了什么?
请帮助..
谢谢。