获取返回部分视图的ajax响应中的模型计数

我通过ajax调用一个名为Issues in 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); } },... 

有没有可能的方法来实现这一目标?

您没有将模型返回到ajax调用,而是返回html。

您可以在html中包含您喜欢的任何信息,并从那里阅读。

首先,添加一个viewmodel以包含您的其他信息:

  public class MoreIssuesViewModel { public IList 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  @foreach(var order in Model.Orders) {  }
....

然后,您可以从success读取此信息

 success: function (evt) { $('#filteredDataList').html(evt); var modelCount = $('#filteredDataList table').data("total") if (modelCount > (20)) { $("#loadMore").show().fadeIn(2000); } },...