Использование ASP.NET Параметры действия MVC в параметрах пользовательского атрибута

#asp.net-mvc #custom-attributes

#asp.net-mvc #пользовательские атрибуты

Вопрос:

Я хочу сделать что-то вроде этого

 [MyAttribute(Message="Please upgrade to view "   name)]
public ActionResult Details(string name)
{
    ....
}
  

Я знаю, что могу вызывать filterContext.ActionDescriptor.GetParameters() изнутри самого кода атрибута, но есть ли какой-либо способ использовать их в контроллере?

Ответ №1:

Правильный способ добиться этого — использовать пользовательский фильтр действий и внутри использовать либо filterContext.ActionDescriptor.GetParameters() , либо извлекать требуемый параметр из RouteData . Вы не можете иметь динамические значения в объявлении атрибута, потому что атрибуты представляют метаданные, которые загружаются в сборку во время компиляции => .NET не позволяет вам этого. При объявлении атрибута могут использоваться только статические или постоянные параметры.