Asp.net mvc 如何知道控制器在ASP.net中是否有属性?

Asp.net mvc 如何知道控制器在ASP.net中是否有属性?,asp.net-mvc,view,attributes,controller,action,Asp.net Mvc,View,Attributes,Controller,Action,在视图中,例如在“_Layout.cshtml”中 如何获取调用此视图的控制器/操作 找到控制器/操作名称后,如何获取其拥有的属性列表?或者测试它是否有属性 谢谢。@ViewContext.Controller将为您提供返回此视图的控制器实例。一旦你得到了实例,你就得到了类型,一旦你得到了类型,你就进入了反射,得到了这个类型被修饰的属性。编写自定义HTML帮助程序来执行此任务可能是值得的: public static class HtmlExtensions { public stati

在视图中,例如在“_Layout.cshtml”中

如何获取调用此视图的控制器/操作

找到控制器/操作名称后,如何获取其拥有的属性列表?或者测试它是否有属性


谢谢。

@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();
    }
}

@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();
    }
}

由于这是谷歌搜索ASP.NET核心版本时的第一个结果,下面介绍如何在.NET核心中执行此操作:(请更新原始线程)


由于这是谷歌搜索ASP.NET核心版本时的第一个结果,下面介绍如何在.NET核心中执行此操作:(请更新原始线程)


这里回答了问题的第一部分:是否需要action\controller属性?查看此操作属性的答案:stackoverflow.com/a/8369591/601179此处回答的问题的第一部分:是否需要操作\控制器属性?请参阅操作属性的回答:stackoverflow.com/a/8369591/6011791。您不检查动作属性,只检查控制器。2.最好使用
IsDefined
方法:1。他就是这么问的。2.你是对的,
定义为
更好。他在问题的主体中提到了这一点,尽管在标题中他要求控制器。1。您不检查动作属性,只检查控制器。2.最好使用
IsDefined
方法:1。他就是这么问的。2.你说得对,
IsDefined
更好。他在问题的主体部分提到了这一点,尽管在标题中他要求控制器。