ActionFilter一定是MVC控制中對於Action控制中最值得研究的玩意,在項目實際中我們不可避免的使用例如:
HandleError
Authorized
OutputCache
在本文中,我們應用Action Selector方式進行Action的選擇,想要闡述清楚這個問題,我們從實際的問題出發來關注。
實際的問題,從和老趙的對話了解
我們有個業務室這樣的:系統有不同的角色,例如Admin、Client、Agent。假設有個功能叫Book/List,那麼就對應了一個List這樣的View和action為List這樣的BookController,現在,我們的情況是對於不同的角色,所對應的List是不同的。Admin看到的Book/List和Client看到的Book/List是不同的,那麼通過Url:http://anytao.com/Book/List/123,不同的角色如何處理,差不多就這樣,是否清楚。
我:那麼對於同一Action如何更好的return到不同的view?
老趙:具體問題是什麼呢?
我: 我現在能想到的是在Action中根據角色Return到不同的View,簡單的辦法就是在List Action根據角色Return到不同的View。問題是,還有什麼更好的辦法。
老趙:准備n各action,分別加上自定的ActionSelector,不要用一個Action,不用一個Action然後在裡面if。
[OnlyInRole("admin")]
[ActionName("List")]
ListForAdmin()
{
}
[OnlyInRole("user")]
[ActionName("List")]
ListForUser()
{
}
OnlyInRole需要自己寫,不過就幾行話
我: 哈哈,差不多了,謝啦。
根據老趙的指導,我對此思路進行了必要的探討,感受果然不同凡響。