У меня есть класс BaseController
, на который наследуются все мои контроллеры. Он имеет метод override ExecuteCore
, который выполняет некоторую начальную настройку, необходимую для (почти) всех контроллеров и их действий.Определить, какой контроллер/действие вызывается в ExecuteCore
protected override void ExecuteCore()
{
SetUpMethod1();
SetUpMethod2();
base.ExecuteCore();
}
protected virtual void SetUpMethod1()
{
//some initialization stuff
}
protected virtual void SetUpMethod2()
{
//some other initialization stuff
}
В случае, когда некоторый контроллер нуждается в некотором другое поведении, легко переопределить соответствующий метод в контроллере, и работает хорошо. Тем не менее, есть несколько действий от разных контроллеров, которые нуждаются в несколько другом поведении в методах настройки.
Я придумал
protected virtual void SetUpMethod1()
{
string controller = (string)ControllerContext.RouteData.Values["controller"]);
string action = (string)ControllerContext.RouteData.Values["action"]);
if (controller/account combination is in a list)
//special setup
else
//regular setup
}
Я не могу избавиться от ощущения, что я делаю что-то неправильно. Есть ли лучший/правильный способ получить это поведение?
У вас есть разрешение в вашей системе? –
@alok_dida: да, разрешение не является проблемой. – SWeko
см. Мой ниже ответ. –