2011-12-04 55 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'更好。 –

相关问题