簡體   English   中英

在返回部分視圖的ajax響應中獲取模型計數

[英]Get model count in ajax response returning Partial View

我正在通過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);
    }
},...

有什么可能的方法來實現這一目標?

您沒有將模型返回給ajax調用,而是要返回html。

您可以在html中包含所需的任何信息,然后從中讀取信息。

首先,添加一個視圖模型以包含您的其他信息:

 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);
    }
},...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM