Javascript 是否可以在ASP MVC中从jquery呈现局部视图

Javascript 是否可以在ASP MVC中从jquery呈现局部视图,javascript,jquery,asp.net-mvc,asp.net-mvc-4,razor,Javascript,Jquery,Asp.net Mvc,Asp.net Mvc 4,Razor,我有一个div,它加载了一个partials列表: @foreach (var comment in Model.Comments) { Html.RenderPartial("~/Views/Comment/_CommentView.cshtml", comment); } 当用户向下滚动到页面底部时,我将在该div中加载新注释: public ActionResult LoadMore(int pageIndex) {

我有一个div,它加载了一个partials列表:

@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>");
        }
for(变量i=0;i
但是这段代码根本不可重用,所以我想让它变得更好。
是否可以:

1) 以某种方式在JS函数中呈现部分,并将数据传入?

2) 从ActionMethod返回部分列表,然后从JS函数添加它?

您肯定会从Controller方法返回部分视图结果。在这种情况下,必须返回部分视图而不是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);
 }
});

使用jQuery的
load()
方法可以很容易地加载部分视图,但您已经在尝试传回JSON,而不是HTML。相反,我会创建一个Web API控制器,用AJAX调用它,并返回用于呈现的注释列表(Web API将为您处理Json的序列化)。但这将返回一个部分,我需要返回其中的10个,或者我缺少什么?注释局部视图仅表示一条注释。我需要返回列表。您必须创建接受注释列表作为模型的局部视图,当您将列表传递给该局部视图时,它会为您准备结果并返回。您可以创建CommentList PartialView并在内部使用您的_commentView。