У меня есть базовый класс контроллеров, от которого унаследованы другие мои контроллеры
public abstract class BaseController : Controller
{
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
...
}
}
Во время инициализации я делаю некоторые настройки, и есть несколько случаев, когда я хотел бы замкнуть выполнение, переходя непосредственно к возвращению ActionResult, полностью пропуская выполнение фактического метода Action. Что-то в этом роде
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
if(specialCase)
{
ViewData[...] = specialCaseInformation;
return View("~/Shared/SpecialCase.aspx");
}
}
Намерением было бы пропустить любой вызываемый метод ActionResult и заменить его моей глобальной страницей особого случая. Но я не думаю, что Initialize был предназначен для этого.
То, что я думаю Мне нужно сделать, это создать отдельный класс ActionFilterAttribute, переопределить метод OnActionExecuting, а если возникнет specialCase, создать объект ViewResult и назначить его свойству filterContext.Result.
Я иду в правильном направлении с этим, или я должен делать это по-другому?