Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC返回ViewResult_C#_Asp.net Mvc - Fatal编程技术网

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登录名时,我还需要将模型传递给视图,否则视图会引发异常,因为模型为空。问题是我无法将模型设置为此视图。