如何将部分视图结果附加到div?

时间:2011-12-07 09:40:25

标签: asp.net-mvc-3 jquery

我有一个div id =“comments” 在这个我一次显示10条评论。 当用户想要查看下一条评论时,我提供了一个按钮,可以收集下10条评论。对于下一个评论,我创建了部分视图,将剩余的10条评论显示在另一个div morecomments中。

我的问题是,当我显示接下来的10条评论时,它向我展示了所有20条评论,但整条评论div正在刷新,如何防止加载整个评论div。

我的代码在这里:

<div id="comments">

 // Display Comments

 <div id="moreButton">
      <input type="submit" id="more" class="morerecords" value="More Post" />
 </div>

</div>

<div id="morecomments">

</div>

Jquery的::

$('.morerecords').livequery("click", function (e) {
            // alert("Showing more records...");
            var next = 10;            
            var url = '@Url.Action("ViewMore", "Home")'
            var data = { nextrecord: next};
             $.ajax({
                type: "POST",
                url: url,
                data: data,
                success: function (result) {
                 $("#morecomments").html(result);
                 }
             });

        });

在上面的代码中我第一次收到10条评论,当用户点击更多帖子按钮时,它会显示10条评论以及接下来的10条评论。但整个div正在变得清新。

我必须做哪些更改才能获得用户评论,而不会影响之前显示的评论?

假设用户在他的部分中有50-60帖子,那么所有评论应该在更多帖子按钮点击上显示10+等等...

我该怎么做?

3 个答案:

答案 0 :(得分:0)

你需要过滤你的记录并把它放在评论div中......你的代码应该是这样的:

$('.morerecords').livequery("click", function (e) {
        var next = 10;            
        var url = '@Url.Action("ViewMore", "Home")'
        var data = { nextrecord: next};
        var older_records = $("#morecomments").text();
        $.("comments").append(older_records); //When you will get next record data, older data will be filled in comment div.
         $.ajax({
            type: "POST",
            url: url,
            data: data,
            success: function (result) {
             $("#morecomments").html(result);
             }
         });

    });

答案 1 :(得分:0)

错误在:

$("#morecomments").html(result);

.html(“somevalue”)删除内容,然后使用您提供的任何参数填充它。 试着这样做:

$("#morecomments").html($("#morecomments").html() + result);

甚至更容易:

$("#morecomments").append(result);

我知道如果你传递字符串会有效,而部分视图基本上是一个html字符串。我不知道部分视图带来的标签是否会出现任何冲突问题。 无论哪种方式,这是添加到元素的最简单方法,而不是写入

答案 2 :(得分:0)

如果您正在使用Entity Framework(您这样做),则需要使用以下内容:

public JsonResult Get(
    //this is basically giving how many times you get the comments before
    //for example, if you get only one portion of the comments, this should be 1
    //if this is the first time, this should be 0
    int pageIndex, 
    //how many entiries you are getting
    int pageSize) { 

    IEnumerable<Foo> list = _context.Foos;
    list.Skip(PageIndex * PageSize).Take(pageSize);

    if(list.Count() < 1) { 
        //do something here, there is no source
    }

    return Json(list);
}

这会让Json回归,但你会明白这一点。你可以根据你的需要修改它。

您也可以使用这种方式进行分页。这是一个帮手:

https://bitbucket.org/tugberk/tugberkug.mvc/src/69ef9e1f1670/TugberkUg.MVC/Helpers/PaginatedList.cs