您也可以在页面上使用当前登录的用户 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');
}
});
});