Al leer acerca de mcv3 me encontré con un nombre de atributo llamado [ActionName]
. De hecho, le da un nuevo nombre al método de acción. Probé un escenario que me hizo pensar; ¿Cómo funcionan las partes internas? Cuando tengo los siguientes dos métodos de acción en mi clase controladorAtributo MVC3 ActionName, su comportamiento y efectos
[ActionName("Test")]
public ActionResult Index()
{
return View();
}
[ActionName("Index")]
public ActionResult Test()
{
return View();
}
pensé que esto va a terminar en una especie de bucle infinito o dará alguna excepción ambigüedad. Pero lo mismo funciona bien y se llama al segundo método cuando doy esta url http://mysite:1234/mycontroller
¿Qué hizo que el motor MVC eligiera el segundo método y no el primero?
¿Alguna idea de por qué sucede esto?
ok, excelente publicación. Desde el post, lo que obtengo es que el mago es ControllerActionInvoker. Esto leerá los datos (de la clave "acción") del diccionario de datos de la ruta. Obtendrá un valor de cadena. Y luego buscará primero el nombre de acción y luego el nombre del método. – thinkmmk
@thinkmmk No buscará el método, busca la 'acción'. No usar los resultados de ActionNameAttribute en: method = action –
@AndrewF Si no tengo ningún atributo ActionName sobre mis métodos, entonces supongo que ControllerActionInvoker buscará el nombre de Methods a través de la reflexión en mi clase de controlador. o ¿mvc pone el atributo de nombre de acción por sí mismo si no está presente? – thinkmmk