JsonResult
방법 를 호출 아약스를 통해 채워됩니다 내보기에 테이블에 대한 정렬을 구현하고있어
: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'로 변하지 않습니다. –