2014-06-14 41 views
0

我有一個裝有泛音的名單一個div:是否有可能使從jQuery的局部視圖,在ASP MVC

@foreach (var comment in Model.Comments) 
    { 
     Html.RenderPartial("~/Views/Comment/_CommentView.cshtml", comment); 
    } 

當用戶向下滾動到頁面的底部,我加載新的評論DIV:

public ActionResult LoadMore(int pageIndex) 
     { 
      int _pageSize = 10; 
      var model = ... get comments 
      return Json(model.ToList(), JsonRequestBehavior.AllowGet); 
     } 

在頁面的jQuery功能我添加新的評論像

for (var i = 0; i < response.length; i++) { 
      ctrls.push("<div class='comment'> <h4>" +"response[i].CommentText" + "</h4></div>"); 
     } 

但這種代碼是不可重用在所以我想讓它變得更好。
是否有可能:

1)以某種方式渲染部分JS函數並傳入數據?
2)從ActionMethod返回部分的列表,並從JS函數中添加它?

+0

您可以加載的局部視圖很輕鬆地用jQuery的'負荷()'方法,但你已經嘗試傳回JSON,而不是HTML。相反,我會創建一個Web API控制器,並使用AJAX調用它,並返回用於呈現的註釋列表(Web API將負責將Json序列化爲您)。 –

回答

2

您肯定會從控制器方法中返回PartialView結果。在這種情況下,您必須返回部分視圖而不是JSON。該部分視圖直接包含html來渲染,因此在成功的方法中將ajax調用添加到您的容器中。

public ActionResult LoadMore(int pageIndex) 
{ 
int _pageSize = 10; 
var model = ... get comments 
return Partial("Comment" , model); 
} 

Ajax調用

$.ajax({ 
    url: '' // set as your wish 
    data: // pageIndex 
    success : function(data){ 
     $('#commentContainer').append(data); 
} 
}); 
+0

但是,這將返回一個部分,我需要返回其中的10個或者我失去了一些東西?評論部分視圖僅代表一個評論。我需要返回列表。 – 1110

+0

您必須創建接受評論列表作爲模型的部分視圖,並且當您將列表傳遞給該部分視圖時,它會爲您準備結果並返回。您可以創建CommentList PartialView並在內部使用_commentView。 – dotnetstep