我试图从ActionFilterAttribute类返回OnActionExecuted方法覆盖中的ViewResult
如下……
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); }
它可以返回到名为“Login”的视图,但我需要将模型对象传递给此视图(在这种情况下,模型对象是用户的类型),我不知道如何直接使用ViewResult类传递它.
有任何想法吗?
更新:
我已经解决了我的问题,将filterContext.ExceptionHandled设置为TRUE,但主要问题没有解决,我无法设置View的Model属性,它始终为null.
解决方法
我遇到了同样的问题,我传递给View的Model总是为NULL.我能够通过以下方式将模型传递给我的视图:
创建viewmodel并设置属性.创建一个新的ViewResult,为其指定View的名称,然后将viewmodel传递给ViewData.
public override void OnActionExecuted(ActionExecutedContext filterContext) { Testviewmodel viewmodel = new Testviewmodel; //Here set all the properties of your viewmodel such as your exception message filterContext.Controller.ViewData.Model = viewmodel; filterContext.Result = new ViewResult { ViewName = "Login",ViewData = new ViewDataDictionary(viewmodel)}; filterContext.ExceptionHandled = true; }