2

我有一个显示用户评论的网页。我默认页面显示最近的 10 个。在底部,当用户点击“显示更多”时,下方会出现另外 10 条评论。用户可以多次点击按钮,每次底部会多显示10条评论。问题是用户必须再次向下滚动。我想使用锚点来选择显示的最后一条评论。

在我看来,我有:

@{ int i = 1; }
@foreach (var item in Model) {
    <div class="Comment" id="Comment-@i">
        @Html.DisplayFor(modelItem => item.CommentText)
    </div>

    i++;
}

@{int numCommentsToDisplay = 10;}
@if (Session["numCommentsToDisplay"] != null) {
    numCommentsToDisplay = Convert.ToInt32(Session["numCommentsToDisplay"]); 
}

@Html.ActionLink("Show More", "Index", new { numCommentsToDisplay = numCommentsToDisplay + 10 })

我的控制器包含:

 public ActionResult Index(int numCommentsToDisplay = 10) {
     this.HttpContext.Session.Add("numCommentsToDisplay", numCommentsToDisplay.ToString());
     var latestComments = db.Comments.Take(numCommentsToDisplay).OrderByDescending(c => c.TimeStamp).ToList();

     return View(latestComments);
 }

当用户第一次点击“显示更多”时,会显示20条评论,如何选择第11条评论?我已经设置了 ID 并手动导航到http://localhost:49208/Comment?numCommentsToDisplay=20#Comment-11

谢谢

4

3 回答 3

4

我已经解决了我自己的问题哇!

我发现一个重载就Html.ActionLink()可以完成这项工作:

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    string controllerName,
    string protocol,
    string hostName,
    string fragment,
    Object routeValues,
    Object htmlAttributes
)

所以我将我的锚作为片段传递:

@Html.ActionLink("Show More", 
                 "Index", 
                 "Comment",
                 null,
                 null, 
                 String.Format("Comment-{0}", numCommentsToDisplay + 1),
                 new { numCommentsToDisplay = numCommentsToDisplay + 10},
                 null
                 )

我在这里找到了答案:Include an anchor tag in an ASP.NET MVC Html.ActionLink

谢谢大家的意见

于 2012-10-08T19:59:18.590 回答
0
@Html.ActionLink(
        "Show More",                        
        "Index",                    
        new { numCommentsToDisplay = numCommentsToDisplay + 10 },          
        new { name = string.Format("Comment-{0}",numCommentsToDisplay) }      
    )
于 2012-10-08T18:28:38.730 回答
0

我建议使用一些脚本客户端大小。

您正在使用 MVC4,我的建议是利用 WebApi。设置一个 api 控制器以返回分页评论并使用 Knockout.js 将结果呈现到页面中。

于 2012-10-08T18:30:11.470 回答