C# 使用@Ajax.ActionLink在视图中呈现局部视图时,未应用排序机制
我正在从事一个MVC4项目。 我所做的是在我的视图中提供一个Ajax操作链接C# 使用@Ajax.ActionLink在视图中呈现局部视图时,未应用排序机制,c#,asp.net,ajax,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Ajax,Asp.net Mvc,Asp.net Mvc 4,我正在从事一个MVC4项目。 我所做的是在我的视图中提供一个Ajax操作链接 @Ajax.ActionLink("Display All Resources", "Resources", "Resources", null, new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "showAllResources"}); 在那个动作链接上,我呈现了一个局部视图,
@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>
当用户单击“显示所有资源”链接switch
时,情况会转到default
并根据FirstName列对列表进行排序
但是,当用户单击其他链接,如ReleaseDate或LastName对该列上的数据进行排序时,它不会以排序格式显示数据,而是根据中的列显示排序后的数据
调试器
我跟随link学习了MVC中分页和过滤的排序
我错过了什么
请帮忙
谢谢。不太清楚您实际得到的是什么和期望得到的是什么。当我第一次显示我的数据时,它是按升序排序的,并对FirstName列执行排序。若用户希望根据其他列对数据进行排序,那个么用户只需单击该列标题即可进行排序。但当我单击要对数据进行排序的列时,视图不会显示已排序的数据。。。但当我放入调试器并检查输出时,它会对数据进行排序…不确定您在这里声称的是什么。第一次调用页面时,
sortOrder
是null
,因此它应该按FirstName
进行排序(并且LastNameSort
设置为“lname\u desc”
。如果单击Last Name链接,它应该按LastName desc
进行排序(并且LastNameSort
设置为null
)。如果你再次单击姓氏链接,它将按名字
(这没有多大意义)哦,对了,那是个错误。我纠正了它…我也解决了问题…我忘了在那些操作链接中添加UpdateTargetId=
属性:)不太清楚实际得到的和期望得到的。当我第一次显示数据时,数据按升序排序,并对FirstName列执行排序。若用户希望根据其他列对数据进行排序,那个么用户只需单击该列标题即可进行排序。但当我单击要对数据进行排序的列时,视图不会显示已排序的数据。。。但当我放入调试器并检查输出时,它会对数据进行排序…不确定您在这里声称的是什么。第一次调用页面时,sortOrder
是null
,因此它应该按FirstName
进行排序(并且LastNameSort
设置为“lname\u desc”
。如果单击Last Name链接,它应该按LastName desc
进行排序(并且LastNameSort
设置为null
)。如果你再次单击姓氏链接,它将按名字
(这没有多大意义)哦,对了,那是个错误。我纠正了它…我也解决了问题…我忘了在那些操作链接中添加UpdateTargetId=
属性(哦,愚蠢的我!!:):)
[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);
}