Я пытаюсь вернуть ViewResult
в OnActionExecuted
переопределение метода из ActionFilterAttribute
класс
Как показано ниже ...
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (CreateCookie && filterContext.Exception == null)
{
LoginCookies lcookie = new LoginCookies(usuDs, usuSenha);
lcookie.WriteCookie("SCE", 10);
}
else
{
filterContext.Result = new ViewResult() { ViewName = "Login" };
filterContext.Result.ExecuteResult
(filterContext.Controller.ControllerContext);
}
Он отлично работает, чтобы вернуться в представление под названием «Вход в систему», но мне нужно передать объект модели в это представление (в данном случае объект модели - это тип пользователей), и я не знаю, как передать его напрямую с помощью класса ViewResult
.
Есть идеи?
ОБНОВЛЕНО:
Я решил проблему, установив для filterContext.ExceptionHandled
значение ИСТИНА, но основная проблема не была решена, я не могу установить свойство Модель
для Представление
, оно всегда равно нулю.
Я могу ошибаться, но я считаю, что данные представления являются частью базы контроллера, а не частью самого представления. Таким образом, вы должны иметь возможность установить данные представления, выполнив следующие действия:
filterContext.Controller.ViewData.Model = <your view model>
Я только что проверил, и это сработало для меня. Не вижу причин, по которым у вас это не должно работать:
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
TestClass1 viewModel = new TestClass1();
viewModel.FirstName = "TestFilter";
filterContext.Controller.ViewData.Model = viewModel;
}