2013-01-24 86 views
3

我正在開發一個管理面板,簡而言之,它爲許多類/模型(如用戶)提供了CRUD功能。我現在執行的方式非常簡單,使用腳手架模板生成控制器和視圖,然後將它們全部組合在頂層Admin目錄下。修改路徑以減少混亂

該應用程序已經擴展了很多,管理控制器現在包含5個其他控制器的內容。管理視圖文件夾有20多個視圖。此外,管理頁面的路徑看起來很可怕!

/Admin/UserCreate 
/Admin/GroupCreate 
... 

我想我可以使用路由來解決這個問題。我的想法是,將有可能保持分開每個控制器,但仍然可以被反射的管理頁面的一部分:

/Admin/User/Create 
/Admin/Group/Create 

這將使路徑更易於閱讀,使這個應用更加的目錄結構可忍受的。

1)是否可以使用自定義路由來實質上構成「子控制器」?有沒有更好的辦法?我以前從未與路線合作過。

2)在某些時候,我打算通過該控制器上的過濾器將用戶的admin控制器關閉。如果我像上面那樣更改路由,我的安全過濾器是否仍能正常工作?我是否需要對每個「子」控制器應用相同的過濾器?

回答

2

這可以使用MVC Areas來實現。

使用上面的示例,您只需創建一個單獨的管理區域並將該控制器/操作結構放在該區域中,同時仍然保留沒有管理員前綴的默認區域。 :)

至於您的其他問題,您可以使用Authorize屬性來處理安全,或實現自己的(自ActionFilterAttribute獲得),並用它裝點您的安全方法。

+0

非常非常真實。 –

+0

這是完美的。我根本不知道這個功能!經過檢查,創建一個'Admin'區域還生成了一個'AdminAreaRegistration.cs'文件,它似乎添加了一條新路線,所以看起來我在正確的軌道上是_sort of_。謝謝 – Jeff