atributo de direccionamiento en MVC 5
Antes de MVC 5 puede asignar direcciones URL a acciones y controladores específicos llamando al routes.MapRoute(...)
en el archivo RouteConfig.cs Aquí es donde se almacena la URL de la página de inicio (Home/Index
). Sin embargo si modifica la ruta por defecto, como se muestra a continuación,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
tener en cuenta que esto afectará a las URL de las demás acciones y controladores. Por ejemplo, si usted tenía una clase controlador llamado ExampleController
y un método de acción dentro de ella llama DoSomething
, entonces la espera URL predeterminada ExampleController/DoSomething
ya no funcionará porque la ruta por defecto se ha cambiado.
Una solución para esto es que se metan con la ruta por defecto y crear nuevas rutas en el archivo RouteConfig.cs para otras acciones y controladores como tal,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Example",
url: "hey/now",
defaults: new { controller = "Example", action = "DoSomething", id = UrlParameter.Optional }
);
Ahora la acción de la clase DoSomething
ExampleController
se se asignará a la url hey/now
. Pero esto puede ser tedioso de hacer cada vez que quiera definir rutas para diferentes acciones. Así que en MVC 5 ahora puede agregar atributos para que coincida con las direcciones URL a acciones como así,
public class HomeController : Controller
{
// url is now 'index/' instead of 'home/index'
[Route("index")]
public ActionResult Index()
{
return View();
}
// url is now 'create/new' instead of 'home/create'
[Route("create/new")]
public ActionResult Create()
{
return View();
}
}
En MVC 4, esto se puede hacer en App_Start/RouteConfig.cs – NikolaiDante
@NikolaiDante debe hacer ese comentario como una respuesta casi me lo perdí y es más rápido que esta respuesta. :) Gracias – GazB
En MVC 5. si tiene un inicio de sesión de formulario, al hacer clic en Iniciar sesión en la página de inicio, seguirá redirigiendo a Controlador doméstico, no a su controlador personalizado especificado en la ruta. la acción de registro hará algo similar. Por lo tanto, además de cambiar la configuración de ruta, también debe cambiar algún código que llame a RedirectionToAction ("Índice", "Inicio") y reemplazarlo con su propio controlador y nombre de acción. – anIBMer