2011-07-20 17 views
5

Ésta es una pregunta novato ...¿El nombre del controlador se deriva del nombre de la clase?

Estoy buscando en el proyecto predeterminado asp.net MVC3 y se dio cuenta de que hay un controlador llamado:

public class AccountController : Controller 

miré a través del código y no podía encuentre un lugar que especifique AccountController se asigna a/Account/para la URL.

Descubrí que puede cambiar el enrutamiento usando routes.MapRoute(..) en el Global.asax, pero sigo sin saber dónde especificaron que AccountController se asigna a/Account /.

Si se asume a partir del nombre de clase, ¿significa eso que todas las clases de controlador deben llamarse xxxxxController?

Respuesta

6

Sí, tiene razón, todos los controladores deben seguir la convención de nomenclatura de una terminación "Controller".

ver la propiedad ControllerName en el código ASP.NET MVC en CodePlex:

public virtual string ControllerName { 
    get { 
     string typeName = ControllerType.Name; 
     if (typeName.EndsWith("Controller", StringComparison.OrdinalIgnoreCase)) 
     { 
      return typeName.Substring(0, typeName.Length - "Controller".Length); 
     } 
     return typeName; 
    } 
} 

De todos modos, se puede cambiar la convención de nombres utilizando su propia fábrica controlador.

Espero que ayude.

0

Sí, a menos que implemente su propia fábrica de Controladores.

6

Sí, este es un aspecto clave de la estructura MVC llamada CoC, Convention over Configuration. La idea es que, siempre que esté dispuesto a seguir las convenciones predeterminadas para cosas como nombres de clases, nombres de métodos, estructura de carpetas, etc., puede minimizar la cantidad de trabajo que necesita hacer para que las cosas funcionen. Usted solo se esfuerza si quiere desviarse de esas convenciones, lo cual ciertamente puede hacer.

Hay una serie de dichos elementos en el marco de MVC. Además de la convención de que todos los controladores son clases llamadas XxxxController, existe la convención de que todas las vistas se encuentran en una carpeta llamada Ver \ Xxxx \ Yyyyy.cshtml.

Cuestiones relacionadas