3

我遇到了这些烦人的问题之一,这些问题非常简单,但我似乎仍然找不到问题。

我有一个简单的“测试”控制器。这是代码:

public class testController : Controller
{
    //
    // GET: /test/

    public ActionResult Index(int id)
    {
        ItemModel item = null;
        item = CommonLib.ReturnFullItem(id);

        return View("~/Views/Emails/ItemRecordedEmail", item);
    }

}

我确实有文件夹/Views/Emails/里面有ItemRecordedEmail.cshtml视图。但我收到以下错误消息:

未找到视图“/Views/Emails/ItemRecordedEmail”或其主视图,或者没有视图引擎支持搜索的位置。搜索了以下位置:/Views/Emails/ItemRecordedEmail

当我将ItemRecordedEmail.cshtml移动到某个共享文件夹并相应地更改代码时,一切似乎都正常。任何想法我做错了什么?

编辑:我将路径更改为 ' ~ /Views/Emails. 这是最初的路径,经过我的所有尝试后,我不小心把它遗漏了。同样的错误消息仍然是同样的问题,只是这次它在“~/Views/Emails”文件夹中查找它。

4

4 回答 4

10

当使用波浪号语法提供视图的完整路径时,您必须提供视图的文件扩展名,因为这会绕过视图引擎的内部查找机制来查找视图。所以应该是

return View("~/Views/Emails/ItemRecordedEmail.cshtml", item);

参考:专业的 ASP.NET MVC 4

于 2013-02-14T09:35:27.817 回答
3

对于 Google 员工来说,这里还有另一个可能的解决方法:

https://stackoverflow.com/a/31345035/591097

确保视图文件的属性 Build Action 设置为 Content 而不是 None。

于 2019-01-10T20:06:30.540 回答
2

我认为您打算使用此代码:

public ActionResult Index(int id)
    {
        ItemModel item = null;
        item = CommonLib.ReturnFullItem(id);

        return View("ItemRecordedEmail", item);
    }

或者这个:

public ActionResult Index(int id)
    {
        ItemModel item = null;
        item = CommonLib.ReturnFullItem(id);

        return View("~/Views/Emails/ItemRecordedEmail.cshtml", item);
    }

您需要在路径中相对添加一个视图,然后它将搜索area/test/view.htmlarea/shared/view.html然后到没有区域的路径的其余部分。就像您收到此错误消息的错误消息中显示的路径一样。

编辑:如果你有一个视图使用这个

return View("~/Views/Emails/ItemRecordedEmail.cshtml", item);

或者如果您有部分观点:

return Partial("~/Views/Emails/ItemRecordedEmail.cshtml", item);
于 2013-02-14T08:27:01.350 回答
0

当我复制并重命名现有视图时遇到了这个问题。MVC 找不到新视图。我通过首先删除复制和重命名的文件来解决它,然后添加一个全新的视图并从现有视图中复制粘贴内容。

于 2020-11-26T16:18:04.083 回答