我有一个非常简单的烦人问题,但我似乎无法找到问题。
我有一个简单的'测试'控制器。这是代码:
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'文件夹中查找。答案 0 :(得分:9)
使用波浪语法提供视图的完整路径时,必须提供视图的文件扩展名,因为这会绕过视图引擎的内部查找机制以查找视图。所以它应该是
return View("~/Views/Emails/ItemRecordedEmail.cshtml", item);
答案 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找不到新视图。我先删除了复制和重命名的文件,然后添加了一个全新的视图并从现有视图复制粘贴到内容中,从而解决了该问题。