1

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

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

我可以在客户端或任何地方验证它吗?在客户端,我有从中发布的用户 ID。我想获得使它被投票的用户ID。逻辑是什么?

我无法编写更多示例代码,因为我不知道该怎么做。对不起我的英语不好。另外,如果不清楚,任何人都可以编辑我的问题。

谢谢。

4

2 回答 2

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');
         }
    });
});
于 2012-04-22T13:34:35.967 回答
0

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

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

var me = $('html').data('user-id');
于 2012-04-22T13:17:44.917 回答