C# 使用@Ajax.ActionLink在视图中呈现局部视图时,未应用排序机制

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"}); 在那个动作链接上,我呈现了一个局部视图,

我正在从事一个MVC4项目。 我所做的是在我的视图中提供一个Ajax操作链接

@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列对列表进行排序

但是,当用户单击其他链接,如ReleaseDateLastName对该列上的数据进行排序时,它不会以排序格式显示数据,而是根据中的列显示排序后的数据 调试器

我跟随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);
        }