2012-04-22 33 views
1

我想在asp.net mvc中製作upvote-downvote面板,比如stackoverflow。如果它是由所有者提供的,我想顯示警告窗格。我使用EF。這是我的動作鏈接。Upvote-downvote驗證像stackoverflow?

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

我可以在客戶端或任何地方驗證它嗎?在客戶端,我有發佈的用戶ID。我想獲得使其提升的用戶ID。什麼是邏輯?

我不能寫更多的示例代碼,因爲我不知道,我怎麼能做到這一點。並對不起,我可憐的英語。同樣,任何一個編輯我的問題,如果它不明確。

謝謝。

回答

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'); 
     } 
    }); 
}); 
0

您可以在源的地方嵌入當前登錄的用戶ID:

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

var me = $('html').data('user-id'); 
+0

這是從其發佈的用戶ID:@ Model.Users.TBL_USER_INFORMATIONS.UserID如何與當前用戶進行比較。我對這個主題很陌生。 – 2012-04-22 13:24:44

+1

您需要學習Javascript。 – SLaks 2012-04-22 13:32:33