tag route net mvc httpget data attribute asp all asp.net-mvc-routing asp.net-core asp.net-core-mvc asp.net-mvc-areas

asp.net mvc routing - route - Cómo usar un Área en ASP.NET Core



route controller c# (2)

Andamios ha generado todos los archivos y agregado las dependencias requeridas.

Sin embargo, el código de inicio de la aplicación puede requerir cambios adicionales para que las cosas funcionen de principio a fin. Agregue el siguiente código al método Configure en la clase de inicio de su Aplicación si no lo ha hecho aún:

app.UseMvc(routes => { route.MapRoute( name : "areas", template : "{area:exists}/{controller=Home}/{action=Index}/{id?}" ); });

¿Cómo se usa un Area en ASP.NET Core? ¡Esto no está documentado adecuadamente!

Supongamos que tengo una aplicación que necesita una sección de administración. Esta sección requiere que sus Vistas sean lugares en esa área. Todas las solicitudes que comienzan con Admin/ necesitarán ser redirigidas a esa área.


Para incluir un Área en una aplicación ASP.NET Core, primero debemos incluir una ruta convencional en el archivo Startup.cs (Lo mejor es colocarlo antes de cualquier ruta que no sea de área):

En el método Startup.cs / Configure:

app.UseMvc(routes => { routes.MapRoute("areaRoute", "{area:exists}/{controller=Admin}/{action=Index}/{id?}"); routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); });

A continuación, cree una carpeta llamada Areas en la raíz de la aplicación y haga que otro Admin nombrado entre en el primero, también haga que estas carpetas estén dentro del Admin (ViewComponent es opcional):

Ahora creamos un controlador dentro de la carpeta Controllers llamado AdminController , el contenido puede ser como:

[Area("Admin")] [Route("admin")] public class AdminController : Controller { public AdminController() { // do stuff } public IActionResult Index() { return View(); } [Route("[action]/{page:int?}")] public IActionResult Orders() { return View(); } [Route("[action]")] public IActionResult Shop() { return View(); } [Route("[action]/newest")] public IActionResult Payments() { return View(); } }

Ahora, para que eso funcione, deberá crear Vistas para todas las acciones que devuelven una. La jerarquía de vistas es exactamente como la que tiene en una carpeta de vistas que no sea de área:

Ahora, ¡deberías estar listo para partir!

Pregunta: ¿Qué pasa si tengo otro controlador dentro de mi Área?

Responder:

Simplemente agregue otro controlador al lado de AdminController y asegúrese de que las rutas sean como las siguientes:

[Area("Admin")] [Route("admin/[controller]")] public class ProductsController : Controller { public ProductsController() { // } [Route("{page:int?}")] public IActionResult Index() { return View(); } }

La parte importante es [Route("admin/[controller]")] . Con eso puedes mantener el estilo de enrutamiento en admin/controller/action/...