2010-08-06 46 views
1

我是MVC的新手,我想知道如何執行以下操作; 使用foreach循環和用戶控件我很高興地顯示數據庫中的用戶列表。 此頁面是管理頁面,並顯示每個用戶的相關權限。我想改變這一點,以便在每個角色的每個標題下都有一個複選框,用於確定該角色是否分配給該人員。 當管理員點擊複選框時,該用戶的角色會相應更改。理想情況下,更新應該立即在數據庫上進行。我想直接從包含複選框的網格更新數據庫

在MVC2中做到這一點的最佳方法是什麼?

+0

我已經通過使用Html.EditorFor幫手取得了一些進展。這已經自動轉換我的布爾值複選框,這是我想要的。然而點擊複選框將不會立即更新數據庫。我需要連接一個事件,也許客戶端? – arame3333 2010-08-06 16:00:22

回答

2

如果您的意圖是通過複選框的切換來更改和觸發值,請考慮這些建議。

使用jQuery爲每個複選框添加一個事件。讓它對控制器中的URL進行AJAX調用。這一事件將觸發時觸發,並會運行此代碼:

$.ajax({ 
//this could also be built with '<%= Url.Action("UpdateUserRole","User") %>/ 
url: "/User/UpdateUserRole", 
type: "POST", 
data: { 
     "userID" : "", //somehow place the user's ID here - cookie, session, etc. 
     "roleID" : $('#theCheckbox').val(), 
     }, 
success: function(data) { alert(data); } 
}); 

作出這樣的新控制器的操作方法。也許它看起來像:

public string UpdateUserRole(int userID, int roleID){ 
    //go update the DB with the 2 params as needed. 
} 

內,你可以打電話給你的數據庫中刪除/添加的角色給用戶,這取決於它目前存在。這取決於你是否想要布爾值來指示啓用/禁用,但這會使你的View複雜化。我的建議會使該行爲成爲數據庫中狀態的簡單「翻轉」。如果用戶/角色配對存在,請將其刪除。如果沒有,請創建它。

確保該控制器方法的安全性。您可能不希望任何人發現該計劃的工作原理。也許在你的表單中包含Html.AntiForgeryToken,並要求使用你的控制器方法。

+0

我已經把一個點擊事件,我已經把一個AJAX帖子。我只需要更新的userId。不過,我認爲這裏的代碼存在一個錯誤;