我有一张类别表。通过单击"名称"可以按升序/降序对表进行排序。 AJAX锚定在顶部。问题是我无法将当前的asc / desc状态从视图传输到控制器。我们的想法是,无论何时用户单击该锚点,排序类型都会发生变化。这是我的代码:
控制器:
public ActionResult Show(string sortBy)
{
CategoryDao categoryDao = new CategoryDao();
var categories = categoryDao.Read().Cast<Category>().ToList();
if (!Request.IsAjaxRequest())
{
Session["SortType"] = "nameAsc";
return this.View(categories);
}
else
{
switch (sortBy)
{
case "nameAsc":
categories = categories.OrderBy(c => c.Name).ToList();
Session["SortType"] = "nameDesc";
break;
case "nameDesc":
categories = categories.OrderByDescending(c => c.Name).ToList();
Session["SortType"] = "nameAsc";
break;
case "productCountAsc":
// TODO
break;
case "productCountDesc":
// TODO
break;
}
return PartialView("_TableBody", categories);
}
}
视图(部分内容):
@Ajax.ActionLink("Name", "Show", "Category", new { sortBy = Session["SortType"].ToString() },
new AjaxOptions
{
HttpMethod = "GET",
UpdateTargetId = "table-body",
InsertionMode = InsertionMode.Replace
})
我尝试调试它,Session变量保持其名称&#34; nameAsc&#34;点击的价值。就我而言,逻辑是正常的。因此,如果您能够在代码中指出错误的内容并进行适当的修复,我将不胜感激!
答案 0 :(得分:0)
实现一个隐藏元素来保存您所订购的内容,并在点击列标题时通过JavaScript更新它...