将参数作为模型传递给视图引擎Razor

3

我想把一个模型传递到我的视图中,我尝试过以下方式:

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

        }

在这个例子中,projet 的值为 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 其中一个视图未找到,但我创建了如下的视图 Propertiesschema 我的错误在哪里?我该如何进行更正?
2个回答

4

应该像这样:

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

为什么?

因为这里有一个区别,就是你所谓的这个重载函数

protected internal ViewResult View(
    string viewName,
    string masterName
)

还有这个重载(这是您需要的):

protected internal ViewResult View(
    string viewName,
    Object model
)

问题出在您的模型(变量 s )是一个字符串,因此被解释为布局而不是模型。

2
如果你的操作被称为属性,并且你的视图被称为属性,那么你可以简单地从你的操作中返回以下内容:
return View((object)s);

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接