在ASP.NET MVC中的Controller之前创建视图

时间:2012-09-20 18:11:42

标签: asp.net-mvc asp.net-mvc-3 visual-studio-2010 razor convention-over-configur

我通过在Views文件夹下的解决方案中创建一个新文件夹创建了一个Razor View,然后我右键单击该文件夹并选择了“添加视图”。

稍后,我转到我的Controller文件夹并右键单击它,选择“添加控制器”。但是,现在我想将我创建的视图附加到我的控制器上,当我这样做时,Visual Studio无法识别我的视图存在:

return View("MyViewName");

如何让Visual Studio识别我现有的视图?我不想通过使用Resharper创建我的Razor视图来解决问题(因为我已经创建了视图)。

提前致谢!

2 个答案:

答案 0 :(得分:3)

无需编写内容,您的文件夹必须命名为控制器。如果需要其他文件夹名称,请键入完整路径:

return View("~/Views/MyCustomFolder/MyViewName.cshtml");

答案 1 :(得分:2)

这是ASP.NET MVC的convention over configuration概念 您的控制器操作应该与视图相同:

public class MyBeautifulController : Controller
{
  public ActionResult MyActionIndex()
  {
    return View();
  }
}

感谢您的观点应该被调用并且位于:~/Views/MyBeautiful/MyActionIndex.cshtml

基本上你删除了控制器类名中的最后一个“Controller”。

这是COC(Convention Over Configuration)。现在,如果您想调用一个未被调用的视图,您将在操作中执行以下操作:

public class MyBeautifulController : Controller
{
  public ActionResult MyActionIndex()
  {
    return View("ViewCalledDifferently", new MyModel());
  }
}

在这种情况下,您的视图将被调用并且位于以下位置: ~/Views/MyBeautiful/ViewCalledDifferently.cshtml并接受MyModel作为模型类型。

希望这有帮助。