返回View()在传递存储路径名的变量时返回错误

时间:2017-05-23 11:59:15

标签: c# asp.net-mvc-4

这可能是一个非常直截了当的问题。但我建立一个MVC应用程序,由于不需要在这里解释的原因,我不认为我存储一个变量视图的路径。

var pathToView = "~/Views/ControllerName/ViewName.cshtml";

然后我从另一个控制器那样调用这个视图:

return View(pathToView);

这将返回一个服务器应用程序错误,指出无法找到视图。

但是,如果我通过以下内容:

return View(string.Format("{0}", pathToView));

这很好用。

我无法传递变量的原因是什么?

由于

修改

这是我正在使用的确切代码,其中有错误的返回语句被注释掉。

public ActionResult Returned()
    {
        //At this point Session["viewToReturn"] = "~/Views/ControllerName/ViewName.cshtml"
        var view = Session["viewToReturn"];
        return View(string.Format("{0}",view));

        //return View(view);
    }

1 个答案:

答案 0 :(得分:0)

当您使用索引器从Session获取项目时,它们将被检索为object

这反过来意味着通过调用

View(view)

viewobject,选择了View的错误重载:

protected internal ViewResult View(
    object model
)

并且view被解释为模型,而不是视图名称。现在View正在查找与控制器方法名称匹配的视图,因为没有指定视图名称。

要纠正此问题,需要演员:

var view = (string)Session["viewToReturn"];

现在调用了预期的重载。