Переменная уровня контроллера доступа из атрибута метода действия

У меня есть следующий базовый класс для всех контроллеров:

public abstract class BaseController:Controller
{
    public string BaseUrl
    {
        get { return "something"; }
    }
}

У меня также есть следующий атрибут фильтра действий:

public class CheckQueryStringAttribute : ActionFilterAttribute
{
    string baseUrl;

    public CheckQueryStringAttribute(string BaseUrl)
    {
        baseUrl = BaseUrl;
    }
}

Я хотел бы использовать BaseUrl из базового контроллера в атрибут следующим образом:

public class LoginController : BaseController
{
    [CheckQueryString(BaseUrl)]
    public ActionResult LoginSuccess()
    {
        return View();
    }
}

Есть ли способ сделать это?


person s.k.paul    schedule 31.05.2017    source источник


Ответы (1)


Вы не можете передать ссылку на переменную или объект в параметр конструктора атрибута, потому что атрибуты будут разрешаться во время компиляции, поэтому вы можете передавать константу только их конструктором.

Но если вы точно объясните, что вы хотите сделать, могу ли я решить вашу проблему по-другому.

person Ali Zeinali    schedule 01.06.2017
comment
Мне нужно передать переменную в атрибуте. Это проблема. - person s.k.paul; 02.06.2017
comment
это невозможно. как я уже сказал, атрибут будет разрешен во время компиляции. они используются для добавления метаданных. поэтому невозможно передать переменную в атрибуте - person Ali Zeinali; 02.06.2017