我的ActionFilter的調用順序有問題。ActionFilterAttribute作用域調用訂單
我創建了設置佈局MasterName的篩選:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)]
public class MasterNameAttribute : ActionFilterAttribute
{
public String MasterName { get; set; }
public MasterNameAttribute(String masterName)
{
this.MasterName = masterName;
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
viewResult.MasterName = this.MasterName;
我用它在我的控制器是這樣的:
[MasterName("_Layout_Main")]
public partial class ProjectController : BaseController
{
[MasterName("_Layout_Special")]
public ActionResult Dashboard()
{
無我有一個ASP MVC被調用過濾器問題按順序動作範圍 - >方法範圍。但是我希望Method-Scope過濾器是結果並覆蓋Controller-Scope過濾器。
我的問題:
- 在MSDN被寫入,所述過濾器處於 「AttributeTargets」 枚舉(類= 4,方法= 0x40的)的枚舉值順序呼叫。爲什麼Controller-Scope過濾器是最後一個被調用的?
- 如何在不使用「訂單」屬性的情況下解決訂單問題?
是檢測samt類型的Methode-Scope過濾器是否存在的正確方法?
提示
.ControllerDescriptor.IsDefined(...
不幫我,因爲我真正的實現有一定的條件,如果MasterName由過濾器或不設置好的。因此,找到方法範圍屬性不會告訴我該過濾器是否已被使用以及是否應該使用控制器範圍過濾器(只有在未使用方法範圍過濾器的情況下)。所以我認爲一個正確的電話訂單是最好的解決方案。
相關的@swapneel的answere:
沒有抱歉,這不符合我的需求。我有一個非常複雜的佈局選擇,最好由屬性設置。我需要繼承,覆蓋和訂單邏輯。
像:
[MasterName("_Layout1", Host = "sub1.domain.com")]
[MasterName("_Layout2", Host = "sub2.domain.com")]
[MasterName("_Layout3", Host = "sub3.domain.com")]
public partial class ProjectController : BaseController
{
[MasterName("_Layout_1_1", Host = "sub1.domain.com")]
[MasterName("_Layout_2_1", Host = "sub2.domain.com")]
public ActionResult Dashboard()
{
這裏一個 「儀表盤」 行動電話與主持人 「sub2.domain.com」 應該覆蓋定義控制器 「_Layout2」 MasterName與 「_Layout2_1」。在所有其他操作中,它不會被覆蓋,「_Layout2」是活動的。
Regards Steffen!
沒有抱歉,這是沒有幫助,請參閱擴展最初的問題以獲取更多信息。 –