2010-01-08 28 views
21

¿Qué código agrega Visual Studio (y dónde se coloca?) Cuando hace clic con el botón derecho en el método del controlador para vincularlo a la vista?¿Cómo funciona ASP.NET MVC enlace vistas y controladores?

¿Cómo se puede hacer esto (vincular el controlador & ver) sin Visual Studio?

+0

La respuesta que recibieron, si bien es muy bueno e informativo, no responde a tu pregunta lo que no debe marcarlo como aceptado. La respuesta de Rajeesh es quizás mejor para aceptar. – Matt

Respuesta

27

Todo es por convención. Coloque sus vistas en la carpeta Views/ControllerName para cada controlador y esa es la ubicación predeterminada para el marco que debe buscar. Pero no es obligatorio de ninguna manera.

Cuando en su controlador se escribe

return View(); 

marco supone que desea la vista con el mismo nombre que el nombre de acción y lo busca en Vistas/Controlador/carpeta. Luego Vistas/Compartidas.

Pero en sus acciones puede escribir

Marco
return View("ViewName"); 

buscará una vista llamada "ViewName" y luego en las mismas carpetas.

Por lo tanto, el nombre predeterminado para una vista sería el nombre de la acción que se está ejecutando. Y esa es una convención.

1

Visual Studio creará una carpeta (si no existe) en ~/Views/{YourControllerName} y ponga su vista allí. Si no lo encuentra allí, se verá en la carpeta ~/Views/Shared. Si desea crear una vista manualmente, debe agregarla a una de esas carpetas, preferiblemente la carpeta ~/Views/{YourControllerName}. Pulse el tutorial NerdDinner para ver esto en acción.

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

+0

Sí, encontré la carpeta y vi esos archivos, pero quiero saber dónde están los enlaces (si es que hay alguno) entre el archivo aspx y el método controler. Mi objetivo final no depende de ese asistente VS –

1

Visual Studio utiliza plantillas para crear las vistas predeterminadas. Las plantillas se encuentran en la carpeta [Directorio de instalación de Visual Studio] \ Common7 \ IDE \ ItemTemplates [CSharp | VisualBasic] \ Web \ MVC \ CodeTemplates.

Si desea crear una página MVC .ASPX manualmente, necesita simplemente crear una página en blanco y proporcionar una directiva de página con los siguientes atributos:

  • Idioma ("C#" o "VB")
  • MasterPageFile (por defecto es ~/views/Común/Site.Master)
  • Hereda (para los modelos de tipo fuerte, utilizar ViewPage < ModelClassName>, de lo contrario ViewPage)

Ejemplo:

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

Para los controles de usuario (.ascx), se aplican las mismas reglas, excepto que no se utiliza el atributo MasterPageFile y se hereda de ViewUserControl.

Ejemplo:

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

P.S. La razón por la que los espacios de nombres no preceden a ninguno de mis nombres de clase es porque los declare en la sección de mi web.config.

4

Por defecto asp.net MVC usa FormViewEngine, que es una implementación de IViewEngine. IViewEngine tiene dos métodos llamados "FindView" y "FindPartialView" que realmente ubican el archivo de vista desde la carpeta "Views/Controller /".

Gracias,
Rajeesh

Cuestiones relacionadas