MVC3 / Razor错误:未找到视图或其主控或视图引擎不支持搜索的位置

时间:2012-01-19 12:58:20

标签: c# asp.net-mvc-3 razor asp.net-mvc-routing

我有一个名为Admin的区域。 Visual Studio中的文件夹结构如下:

Areas
   Admin
      Controllers
      Views

我有一个名为AccountController的控制器,其中有一个名为Verify的Action。我在这个动作中有这行代码:

return View("EmailVerificationComplete");

但是,我收到了这个错误:

未找到“EmailVerificationComplete”视图或其主视图,或者视图引擎没有支持搜索到的位置。搜索了以下位置: 〜/查看/帐号/ EmailVerificationComplete.aspx 〜/查看/帐号/ EmailVerificationComplete.ascx 〜/查看/共享/ EmailVerificationComplete.aspx 〜/查看/共享/ EmailVerificationComplete.ascx 〜/查看/帐号/ EmailVerificationComplete.cshtml 〜/查看/帐号/ EmailVerificationComplete.vbhtml 〜/查看/共享/ EmailVerificationComplete.cshtml 〜/查看/共享/ EmailVerificationComplete.vbhtml

这是为什么?为什么MVC不知道相对于Admin区域查看Views文件夹?

我该如何解决这个问题?

谢谢,

萨钦

5 个答案:

答案 0 :(得分:5)

  

为什么MVC不知道相对于Admin区域查看Views文件夹?

因为AccountController不在Admin区域内。它可能在~/Controllers/AdminController.cs中,因此按照惯例,ASP.NET MVC将在~/Views/Shared~/Views/Account中查找其相应的视图。

答案 1 :(得分:5)

我遇到了同样的问题。 我发现当你发送某个动作的请求时,即使网址无效,mvc会根据传入的网址尝试匹配你的动作。如果找到匹配,(在我的情况下,它会转到正确的位置)执行控制器动作方法),但由于传入的路径错误,因此无法找到关联的视图。

答案 2 :(得分:3)

对我来说,我试图将一个简单的字符串传递给视图。这导致View()呈现错误的重载,即View(string viewName),但我真正想要的是View(对象模型)。所以解决方案就是将字符串转换为对象。或者我可以使用ViewBag而不将任何内容传递给View()。

答案 3 :(得分:1)

我之前遇到过这个错误...在我的情况下,碰巧.csproj文件无意中被排除在RELEASE分支的合并之外,因此没有文件。缺少索引到项目中。合并.csproj后,就可以找到重建和部署的文件。

答案 4 :(得分:1)

使用 return View(型号:“EmailVerificationComplete”);