像stackoverflow一样进行upvote-downvote验证?

时间:2012-04-22 13:15:23

标签: asp.net-mvc validation client-side

我想在asp.net mvc中制作upvote-downvote面板,就像stackoverflow一样。如果它被所有者推崇,我想显示警告窗格。我使用EF。这是我的行动链接。

<a href='@Url.Action("Upvote", "Author")'>
     <img src='@Url.Content("~/Images/upvote.png")' width="20" height="20" />
</a>

我可以在客户端或任何地方验证它。在客户端,我有发布的UserID。我想获得使其成为upvoted的userID。逻辑是什么?

我不能写更多的示例代码,因为我不知道,我怎么能这样做。对不起我的英文不好。还有,任何人都可以编辑我的问题,如果不清楚的话。

感谢。

2 个答案:

答案 0 :(得分:2)

您还可以使用页面上当前登录的用户ID,但由于您必须在服务器上再次验证它,为什么不让服务器处理它。如果您没有使用AJAX来记录投票(为什么不是您),那么只需要进行检查并使用一条消息来呈现视图,该消息指示未记录投票的原因。如果您正在使用AJAX(对您有用),那么让投票记录操作返回一些JSON,其状态指示未记录投票以及原因,然后在对话框中显示该消息。

在后一种情况下,您可能希望使用数据属性来记录一些信息,以便更容易形成AJAX请求。

<a href='@Url.Action("Upvote", "Author")' data-vote-type="up" class="vote-button">
     <img src='@Url.Content("~/Images/upvote.png")' width="20" height="20" />
</a>


$('.vote-button').on('click', function() {
    var $this = $(this),
        href = $this.attr('href'),
        voteType = $this.data('vote-type');
    $.post(href,{ "voteType": voteType }, function(result) {
         if (!result.Success) { // failed, show message
             $('<div title="error"><p>' + result.Message + '</p></div>')
                  .dialog({
                     autoOpen: true,
                     modal: true,
                     resizable: false,
                     ...
                  });
         }
         else { // mark vote as recorded
            $('.vote-button').removeClass('active');
            $this.addClass('active');
         }
    });
});

答案 1 :(得分:0)

您可以在源中的某处嵌入当前登录的用户ID:

<html data-user-id="@CurrentUser.Id">

var me = $('html').data('user-id');