JsonResult
方法 を呼び出し、AJAXを通じて取り込まれます私の見解でテーブルのソート実装しています
:ViewBagを使用して、ビューとJsonResultメソッドの間でデータを交換できますか?
<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>')
});
}
});
}
けど番目eの値はViewBag.Sort
で、常にasc
ですか?
'ViewBag.Sort = sort ==" desc "? "asc": "desc"; ' –
最初のコード行 - RHS' ViewBag.Sort'の値は常に 'null'です(まだ設定していません)ので、LHS' ViewBagの値です。Sort'は常に 'desc'され、その後、あなたの' else'ブロックは、これが正しいと論理的に聞こえるが、それはまだ常に 'asc'は、変更されません!asc' –
'に設定します –