0

我正在开发一个 MVC 应用程序。我正在尝试开发一个评论框。

我已经写了一段代码,在这段代码中,我写了这样的过程,当用户点击显示评论链接时,评论就会出现。

现在,我想更改功能,不点击显示评论按钮,所有评论都应该加载。

我正在尝试这样做,但它不起作用。

显示评论链接代码

 <div class="span12" style="margin-left:0px; margin-top:50px;">
      <span style="font-size:16px;">
          @Ajax.ActionLink("Show Comments", null, null, null, new { id = Model.Id, @class = "addremark" })

        <div class="RemarkBox"></div>
        <span class="CommentAdd"></span>
      </div>

我想在页面加载时加载评论,我期待评论在加载页面时显示加载,但我仍然想点击Show Comment链接。

 $(document).ready(function () {

    $('a.addremark').click(addremarkClick);

    // Call on load also
    addremarkClick();

    });

    function addremarkClick(event)
    {

        var url = '@Html.Raw(Url.Action("ShowCommentBox", "Comment", new { Id = "idValue", EntityType = "Payment" }))';
        if (typeof event !== 'undefined') url = url.replace("idValue", event.target.id);
        else url = url.replace("idValue", $('a.addremark')[0].id);
        $('.RemarkBox').load(url);
        $(this).closest('div').find('div.RemarkBox').show();
        return false;
    }

function addremarkClick()
    {
        alert("Clciked");
        var url = '@Html.Raw(Url.Action("ShowCommentBox", "Comment", new { Id = "idValue", EntityType = "Payment" }))';
         if (typeof event !== 'undefined') url = url.replace("idValue", event.target.id);
         else url = url.replace("idValue", $('a.addremark')[0].id);
         $('.RemarkBox').load(url);
         $(this).closest('div').find('div.RemarkBox').show();
         return false;
    }
4

2 回答 2

1

最好的方法是先加载页面,然后使用 js,获取可用的显示评论链接列表,$('a.addremark')然后不触发点击事件,您可以遍历集合,然后进行 AJAX 调用,以便在期间加载评论运行时无需用户单击链接。

此外,让 javascript 调用在特定持续时间后刷新页面上的评论将很有用SetTimeOut,因此用户也不必刷新页面或单击链接来查看更新的评论。您可以看到 Stackoverflow 中使用的类似方法,它突然要求我单击以重新加载帖子以查看编辑。所以它会提供更好的可用性。

编辑

以下可以是步骤

  1. 页面加载完成,文档准备好后,调用一个 javascript 方法找到所有类为addremark.

  2. 对于每个链接元素,您将与要为其获取评论的帖子 ID 相关联

  3. 使用 postid 进行 AJAX 调用,然后获取所有评论,然后在相应的 div 中更新它。

  4. 上面的方法可以传递一个参数给javascript方法的setInterval。这个方法请参考这里

于 2013-05-04T12:06:45.970 回答
0

在你的页面中插入以下js,不要在普通js中插入。

<script>
       window.setInterval(function(){
          addremarkClick();
          }, 600000);// run this after every minute
</script>
于 2013-05-04T13:42:05.593 回答