3

我想将模型传递给我的视图,我试过这个

public ActionResult Properties(string projet) {
            string s = projet;
            if (projet != null)
                return View("Properties", s);
            return RedirectToAction("Index", "Akeo");

        }

在此示例projet中具有 as 值projet2。在程序启动中:出现此错误:~/Views/Akeo/Properties.aspx ~/Views/Akeo/Properties.ascx ~/Views/Shared/Properties.aspx ~/Views/Shared/Properties.ascx ~/Views/Akeo/Projet 2.master ~/Views/Shared/Projet 2.master ~/Views/Akeo/Projet 2.cshtml ~/Views/Akeo/Projet 2.vbhtml ~/Views/Shared/Projet 2.cshtml ~/Views/Shared/Projet 2.vbhtml 未找到其中一个视图,但我创建了Properties这样的视图: 图式

我的错是什么?我该如何纠正?

4

2 回答 2

4

应该是这样的:

return View("Properties", (object)s);

为什么?

因为这个重载(这就是你所说的)之间存在差异:

protected internal ViewResult View(
    string viewName,
    string masterName
)

这个重载(这是你需要的):

protected internal ViewResult View(
    string viewName,
    Object model
)

问题来自这样一个事实,即您的模型(s变量)是一个字符串,因此被解释为布局而不是模型。

于 2013-05-27T15:12:11.073 回答
2

如果您的操作被调用Properties并且您的视图被调用Properties,那么您可以简单地从您的操作返回:

return View((object)s);

无需指定视图名称。只有当视图名称与操作名称不匹配时,您才需要指定视图名称。

于 2013-05-27T15:15:27.030 回答