获取返回部分视图的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); } },...