(C#)无法使用ASP.NET MVC中的Session变量传输订单状态

时间:2015-06-22 13:49:18

标签: c# asp.net ajax asp.net-mvc sorting

我有一张类别表。通过单击"名称"可以按升序/降序对表进行排序。 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;点击的价值。就我而言,逻辑是正常的。因此,如果您能够在代码中指出错误的内容并进行适当的修复,我将不胜感激!

1 个答案:

答案 0 :(得分:0)

实现一个隐藏元素来保存您所订购的内容,并在点击列标题时通过JavaScript更新它...