asp.net mvc找不到我的观点

时间:2013-02-14 08:25:27

标签: asp.net-mvc model-view-controller

我有一个非常简单的烦人问题,但我似乎无法找到问题。

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

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 个答案:

答案 0 :(得分:9)

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

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

参考:Professional ASP.NET MVC 4

答案 1 :(得分: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.html中搜索,然后搜索到area/shared/view.html,然后搜索到没有区域的路径的其余部分。与此错误消息中显示的错误消息中显示的路径类似。

编辑:如果您有视图,请使用此

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

或者如果你有部分观点:

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

答案 2 :(得分:0)

对于Googler来说,这里还有另一种可能的解决方法:

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

确保将“查看”文件的属性“构建操作”设置为“内容”而不是“无”。

答案 3 :(得分:0)

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