当您右键单击控制器方法以链接到视图时,Visual Studio会添加什么代码(以及它放在哪里?)?
如何在不使用Visual Studio的情况下执行此操作(链接控制器和视图)?
答案 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教程,了解这一点。
答案 3 :(得分:1)
Visual Studio使用模板创建默认视图。模板位于 [Visual Studio安装目录] \ Common7 \ IDE \ ItemTemplates [CSharp | VisualBasic] \ Web \ MVC \ CodeTemplates 文件夹中。
如果您希望手动创建MVC .ASPX页面,则只需创建一个空白页面并提供具有以下属性的Page指令:
示例:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="ViewPage<ListCompanyManagerDetailsViewModel>" %>
对于用户控件(.ASCX),适用相同的规则,但不使用MasterPageFile属性,并且您从 ViewUserControl 继承。
示例:
<%@ Control Language="C#" Inherits="ViewUserControl<Contact>" %>
P.S。命名空间不在我的任何类名之前的原因是因为我在web.config的部分中声明了它们。