我想在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。逻辑是什么?
我不能写更多的示例代码,因为我不知道,我怎么能这样做。对不起我的英文不好。还有,任何人都可以编辑我的问题,如果不清楚的话。
感谢。
答案 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');