【发布时间】:2017-05-01 16:55:29
【问题描述】:
我正在为我的视图中的表实现排序,它通过调用 JsonResult 方法的 ajax 填充
这是我用于订购的标题链接:
<a style="cursor: pointer" onclick="getData('@Html.Raw(ViewBag.Sort == "asc" ? "desc" : "asc")')" id="sort">Title</a>
JsonResult 方法:
public JsonResult BooksData(string sort)
{
ViewBag.Sort = ViewBag.Sort == "desc" ? "asc" : "desc";
var books = new List<Book>();
if (sort == "asc")
{
books = db.Books.Include(b => b.Author).OrderBy(b => b.Title).ToList();
ViewBag.Sort = "desc";
}
else
{
books = db.Books.Include(b => b.Author).OrderByDescending(b => b.Title).ToList();
ViewBag.Sort = "asc";
}
return Json(books, JsonRequestBehavior.AllowGet);
}
getsData 函数:
function getData(sort) {
var srt = sort;
$('#tbl>tbody').empty();
$.ajax({
type: 'GET',
url: '/Book/BooksData?sort=' + srt,
dataTtype: 'json',
success: function (data) {
$.each(data, function (index, val) {
$('#tbl>tbody').append('<tr><td>' + val.Title + '</td><td>' + val.Author.Name + '</td></tr>')
});
}
});
}
但ViewBag.Sort 的值始终是asc?
【问题讨论】:
-
ViewBag.Sort = sort == "desc" ? "asc" : "desc"; -
第一行代码 - RHS
ViewBag.Sort的值始终为null(您尚未设置)因此 LHSViewBag.Sort的值始终为desc和然后您的else块将其设置为asc -
这听起来正确且合乎逻辑,但它仍然总是
asc,不会改变! -
你为什么还要在
onclick()中再次反转它在你的视图中。有点难以理解你想在这里做什么 -
我将此部分删除为
getData('@ViewBag.Sort'),但是当我单击链接时,sort的值变为空""
标签: ajax asp.net-mvc asp.net-mvc-routing jsonresult