Я пытаюсь вернуть другое представление, если условие выполнено. Я хочу сохранить Модель, переданную в вид из действия.
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var subAction = filterContext.RequestContext.RouteData.Values["subaction"].ToString();
var action = filterContext.RequestContext.RouteData.Values["action"].ToString();
if (!string.IsNullOrEmpty(subAction))
{
var view = (ViewResultBase) (filterContext.Result);
filterContext.Result = View(action + subAction, view.ViewData.Model);
}
base.OnActionExecuting(filterContext);
}
При этом я получаю "Object reference not set to an instance of an object.
". Очевидно, модель не была установлена?
Причина, по которой я делаю это таким образом, заключается в том, что я хочу сохранить наименование представления как можно более простым. И мой URL выглядит так: /Global/Modules/Admin/Users/Create
. Это вернуло бы представление «UsersCreate». Который работает. Но модель либо пуста, либо равна нулю!
UPDATE
На самом деле. Это просто поразило меня. Поведение правильное. Потому что я только возвращаю вид. Действие никогда не выполняется. Пользовательское действие выполняется, но возвращает представление UsersCreate. Как я могу сделать что-то вроде RedirectToAction, без фактического перенаправления.