Как узнать, есть ли у контроллера атрибут в ASP.net? - PullRequest
0 голосов
/ 04 декабря 2011

В представлении, например, в "_Layout.cshtml"

Как получить контроллер / действие, которое вызвало это представление?

После того, как найдено имя контроллера / действия, как получить список атрибута, который у него есть? Или проверить, имеет ли он атрибут?

Спасибо.

1 Ответ

5 голосов
/ 04 декабря 2011

@ViewContext.Controller даст вам экземпляр контроллера, который вернул это представление.Как только вы получите экземпляр, вы получите тип, и как только у вас будет тип, вы попадете в Reflection, чтобы получить атрибуты, которыми украшен этот тип.Написание специального помощника 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();
    }
}
...