ASP.NET MVC return ViewResult

Я пытаюсь вернуть 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 значение ИСТИНА, но основная проблема не была решена, я не могу установить свойство Модель для Представление , оно всегда равно нулю.

7
задан SteveC 8 October 2013 в 15:04
поделиться

1 ответ

Я могу ошибаться, но я считаю, что данные представления являются частью базы контроллера, а не частью самого представления. Таким образом, вы должны иметь возможность установить данные представления, выполнив следующие действия:

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;
    }

Справочная документация

2
ответ дан 6 December 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: