从区域中的控制器返回视图不起作用

时间:2012-04-06 17:27:51

标签: asp.net-mvc-3 controller asp.net-mvc-routing asp.net-mvc-areas

在阅读了关于这个主题的几篇文章后,我还没有找到问题的答案。我有一个MVC 3应用程序,并添加了一个区域。一切都很好,直到我尝试从区域内的控制器返回一个视图。

我可以成功发布到控制器Save Method但只需返回视图(返回View())我得到以下内容:

未找到“保存”视图或其主视图或视图引擎不支持搜索的位置。搜索了以下位置:

~/Areas/Test/Views/Default1/Save.aspx
~/Areas/Test/Views/Default1/Save.ascx
~/Areas/Test/Views/Shared/Save.aspx
~/Areas/Test/Views/Shared/Save.ascx
...

这看起来很基本,不知道为什么我遇到这么多麻烦。

我使用了Phil Haack的RouteDebugger(http://nuget.org/packages/routedebugger),所有路线都在设置......

1 个答案:

答案 0 :(得分:1)

MVC期望(按惯例)一个视图(与任何一个文件夹中的动作名称同名(默认情况下,但你可以覆盖它)。你应该在任何文件夹中都有视图。这就是MVC约定。所以将视图添加到该文件夹​​。您可以通过右键单击操作方法中的Return View() statmenet并选择Add View选项来添加它。它将自动添加一个视图。

enter image description here

或者您可以右键单击Areas/Test/Views/Default1文件夹并选择添加视图,并使用与Action方法相同的名称进行保存。如果要使用与操作名称不同的名称保存它,可以像这样使用View方法

return View("MyOtherViewName");

假设您在MyOtherViewName.cshtml文件夹

中添加了Areas/Test/Views/Default1作为您的视图