C# ASP.NET MVC返回ViewResult
我试图在C# ASP.NET MVC返回ViewResult,c#,asp.net-mvc,C#,Asp.net Mvc,我试图在OnActionExecuted方法覆盖中从actionfilteratAttribute类返回ViewResult 就像下面 public override void OnActionExecuted(ActionExecutedContext filterContext) { if (CreateCookie && filterContext.Exception == null) { LoginCookies lcookie = new
OnActionExecuted
方法覆盖中从actionfilteratAttribute
类返回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,但主要问题没有解决,我无法设置视图的Model
属性,它始终为空。我可能错了,但我相信视图数据是控制器基础的一部分,而不是视图本身的一部分。因此,您应该能够通过执行以下操作来设置视图数据:
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;
}
filterContext.Result = new ViewResult { ViewName = "Exception", ViewData = new ViewDataDictionary(new CmsExceptionViewData(filterContext.Exception, action, controllerName, errorMessage)) };
因此,ViewData是使用接受字典或模型的ViewDataDictionary创建的。我遇到了相同的问题,即传递给视图的模型始终为空。我能够通过以下方式将模型传递到视图:
创建viewModel并设置属性。创建一个新的ViewResult,将其命名为视图名称,然后将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;
}
哇,我认为它是可行的,但不,这个模型在view@ozsenegal在您的示例中,您处于OnActionExecuted事件中,但您确定您在实际代码中处于该事件中吗?此时应该可以访问您的视图数据。是的,我确定。视图数据可以通过您显示的方式访问,但在视图中,模型属性保持不变null@ozsenegal检查我的更新。我的代码对我有效,它将视图模型更改为我在筛选器中添加的模型。请显示不起作用的代码。代码在上面。当我在上面的代码中返回ViewResult登录名时,我还需要将模型传递给视图,否则视图会引发异常,因为模型为空。问题是我无法将模型设置为此视图。