我有一个名为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文件夹?
我该如何解决这个问题?
谢谢,
萨钦
答案 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”);