ページで現在ログインしているユーザー 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');
}
});
});