2010-08-14 39 views
1

我想我可能會弄亂我的控制器。我有一個相當簡單的網站,允許「職員」或「客戶」類型的用戶查看項目。工作人員可以訪問所有項目,可以添加和刪除它們,添加和刪除用戶,爲客戶分配項目權限等。如何管理ASP.NET MVC2中用戶類型之間的顯着功能差異

現在這意味着我有一個UserController和ProjectController,充滿了身份驗證屬性(即。so客戶可以更改他的電子郵件,但沒有其他權限,客戶不能添加/刪除/編輯項目,但可以瀏覽其內容)。

而且,基於用戶類型/角色,我切換出菜單組件。我是否應該將我的控制員分成更窄的焦點,還是這個地區的候選人?我覺得我的很多代碼都在檢查用戶X是否可以根據他的角色和顯式的每個項目權限來執行操作Y.

PS。我重寫了主題幾次試圖把它縮短:\

回答

2

你有considerd分裂你的控制器像這樣:

  • ClientUserController

  • ClientProjectController

  • StaffUserController

  • StaffProjectController

像這樣拆分將允許您輕鬆地爲每個用戶類型分配專門的控制器和視圖。在每個「Staff」控制器的頂部使用一個身份驗證屬性來確保訪問安全。

通過建立approriate路線,你可以mainatin友好的URL給每個CONTROLER類型:如

  • /用戶/編輯(顯示所有用戶的細節, 但只允許電子郵件字段的編輯)
  • 員工/用戶/編輯(允許編輯所有 用戶字段)
+0

是的,這可能是要走的路。我確實以ie開頭。 UserAdminController,但我結束了太多的重複。我會看看我是否可以清理一下。 – 2010-08-14 09:05:40

+1

您可以隨時在控制器之間共享常用功能......記住,控制器實際上只不過是類 - 它只是命名約定(使框架調用正確的方法)使它們看起來「神奇」。 此外,永遠不要低估使用不同ViewModels實現不同功能的能力..您的主控制器代碼可能保持不變,但呈現給View的數據(包括顯示類型屬性等)可能因您決定的視圖而異以呈現您所傳遞的數據(包括實際數據和元數據)。 – JcMaltaDev 2010-08-14 11:27:14

相關問題