2016-07-22 41 views
0

我打電話了一個名爲Issues通過AJAX Issues控制器的方法。獲取模式計數Ajax響應返回管窺

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

是否有任何可能的方法來實現這一目標?

+1

爲什麼在世界上,當你只想要20時,你將獲取所有記錄並將其物化爲memeory 20.在查詢中刪除'.ToList()。在'_LoadMoreIssues'視圖中,添加一個隱藏的輸入(比如說)''然後你可以使用'var modelCount = $ EVT).find( '@計數')VAL();''或者$(EVT).find(someElement)。長度;''那裏是someElement'東西是呈現爲集合中的每個項目 –

回答

3

你不是返回一個模型的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); 
    } 
},... 
+0

我在'window.alert越來越不確定值modelCount(「元模型計數:」 + modelCount);' – Hanady

+0

嗯,這一切都取決於你如何建立你的部分觀點,你還沒有在這個問題提供你。需要適應*此處提供*來匹配您的具體方案一般原理見@StephenMuecke的評論是一種替代方法傳遞的細節(在一個隱藏的輸入) - 但相同的主要適用 –

+0

對不起,這是我的壞我。現在它按預期工作了,謝謝:) – Hanady