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>

クライアント側またはどこでも検証できますか。クライアント側には、投稿元の UserID があります。賛成したユーザー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 に答える