我通过ajax在Issues
控制器中调用名为Issues
的方法。
var url = "@(Url.Action("Issues", "Issues"))";
$.ajax({
type: 'POST',
url: url,
data: issue,
dataType: "html",
success: function (evt) {
$('#filteredDataList').html(evt);
},
});
在我的控制器中:
[System.Web.Mvc.HttpPost]
public ActionResult Issues(IssuesModel issue)
{
var model = allIssuesList.OrderBy(p => p.ID).ToList();
return PartialView("~/Views/Issues/_LoadMoreIssues.cshtml", model.Take(20));
}
我需要的是在ajax调用的成功响应中获取模型计数的方法,所以我可以执行以下操作:
success: function (evt) {
$('#filteredDataList').html(evt);
var modelCount = ???
if (modelCount > (20)) {
$("#loadMore").show().fadeIn(2000);
}
},...
有没有办法实现这个目标?
答案 0 :(得分:3)
您没有将模型返回到ajax调用,而是返回html。
您可以在html中包含您喜欢的任何信息,然后从那里阅读。
首先,添加一个viewmodel以包含您的其他信息:
public class MoreIssuesViewModel
{
public IList<Order> Orders { get;set; }
public int Total { get;set; }
}
从控制器中使用它:
[System.Web.Mvc.HttpPost]
public ActionResult Issues(IssuesModel issue)
{
var data = allIssuesList.OrderBy(p => p.ID).ToList()
var model = new MoreIssuesViewModel
{
Orders = data.Take(20),
Total = Orders.Count()
}
return PartialView("~/Views/Issues/_LoadMoreIssues.cshtml", model);
}
然后在您的视图中,将新信息存储在某处(示例)
@model MoreIssuesViewModel
<table data-total='@Model.Total'>
<tbody>
@foreach(var order in Model.Orders) {
<td>....</td>
}
然后,您可以从success
success: function (evt) {
$('#filteredDataList').html(evt);
var modelCount = $('#filteredDataList table').data("total")
if (modelCount > (20)) {
$("#loadMore").show().fadeIn(2000);
}
},...