ASP.NET MVC如何链接视图和控制器?

时间:2010-01-08 20:33:09

标签: asp.net-mvc

当您右键单击控制器方法以链接到视图时,Visual Studio会添加什么代码(以及它放在哪里?)?

如何在不使用Visual Studio的情况下执行此操作(链接控制器和视图)?

4 个答案:

答案 0 :(得分:30)

一切都按照惯例。 您将视图放在每个控制器的Views / ControllerName文件夹中,这是框架要查找的默认位置。但它绝不是必须的。

在你的控制器中写下

return View();

Framework假定您希望视图与操作名称同名,并在Views / Controller /文件夹中查找它。然后是观看/共享。

但是在你的行动中你可以写

return View("ViewName");

Framework将在相同的文件夹中查找名为“ViewName”的视图。

因此视图的默认名称将是正在执行的操作的名称。这是一个惯例。

答案 1 :(得分:5)

默认情况下,asp.net MVC使用FormViewEngine,它是IViewEngine的一个实现。 IViewEngine有两个名为“FindView”和“FindPartialView”的方法,它们实际上从“Views / Controller /”文件夹中找到了视图文件。

谢谢,
Rajeesh

答案 2 :(得分:1)

Visual Studio将在〜/ Views / {YourControllerName}下创建一个文件夹(如果它尚不存在)并将您的视图放在那里。如果它没有在那里找到它,它将在〜/ Views / Shared文件夹中查找。如果要手动创建视图,则需要将页面添加到其中一个文件夹,最好是〜/ Views / {YourControllerName}文件夹。点击NerdDinner教程,了解这一点。

http://nerddinnerbook.s3.amazonaws.com/Intro.htm

答案 3 :(得分:1)

Visual Studio使用模板创建默认视图。模板位于 [Visual Studio安装目录] \ Common7 \ IDE \ ItemTemplates [CSharp | VisualBasic] \ Web \ MVC \ CodeTemplates 文件夹中。

如果您希望手动创建MVC .ASPX页面,则只需创建一个空白页面并提供具有以下属性的Page指令:

  • 语言(“C#”或“VB”)
  • MasterPageFile(默认为〜/ Views / Shared / Site.Master
  • 继承(对于强类型模型,使用 ViewPage< ModelClassName > ;否则 ViewPage

示例:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="ViewPage<ListCompanyManagerDetailsViewModel>" %>

对于用户控件(.ASCX),适用相同的规则,但不使用MasterPageFile属性,并且您从 ViewUserControl 继承。

示例:

<%@ Control Language="C#" Inherits="ViewUserControl<Contact>" %>

P.S。命名空间不在我的任何类名之前的原因是因为我在web.config的部分中声明了它们。