2011-12-04 78 views
0

在視圖中,例如,在「_Layout.cshtml」如何知道控制器是否在ASP.net中有屬性?

如何獲取調用此視圖的控制器/操作?

找到控制器/操作名稱後,如何獲取它具有的屬性列表?或測試它是否有屬性?

謝謝。

+0

第一部分回答了在這裏:http://stackoverflow.com/questions/1083774/getting-the-name-of-the-在asp-net-mvc中的控制器和動作方法在視圖中 –

+0

你想要action \ controller屬性嗎?看到這個動作屬性的答案:stackoverflow.com/a/8369591/601179 – gdoron

回答

5

@ViewContext.Controller將爲您提供返回此視圖的控制器實例。一旦獲得實例,就可以獲得該類型,並且一旦獲得了類型,即可獲得該類型所裝飾的屬性。編寫自定義HTML助手來完成這項任務可能是值得的:

public static class HtmlExtensions 
{ 
    public static bool IsDecoratedWithFoo(this HtmlHelper htmlHelper) 
    { 
     var controller = htmlHelper.ViewContext.Controller; 
     return controller 
      .GetType() 
      .GetCustomAttributes(typeof(FooAttribute), true) 
      .Any(); 
    } 
} 
你的問題
+0

1.您不檢查動作屬性,只檢查控制器。 2.最好使用IsDefined'方法:http://msdn.microsoft.com/en-us/library/system.reflection.memberinfo.isdefined.aspx – gdoron

+0

看看我的答案在這裏:http:// stackoverflow。 com/a/8369591/601179 – gdoron

+3

1.這就是他所問的。你是對的,'IsDefined'更好。 –

相關問題