21. Enrutamiento en MVC
- Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de ASP.NET Core que nos ayudan a crear aplicaciones web basadas en datos.Al final de este curso, podremos realizar todas las operaciones de un CRUD, es decir, crear, leer, actualizar y eliminar datos utilizando SQL Server como nuestra base de datos.
- En este vídeo, analizaremos el enrutamiento en ASP.NET Core MVC. Hay 2 técnicas de enrutamiento. Enrutamiento convencional y enrutamiento de atributos. Cuando una solicitud del navegador llega a nuestra aplicación, es el controlador en el patrón de diseño MVC, el que maneja la solicitud HTTP entrante responde a la acción del usuario.
- En el vídeo veremos las diferentes maneras de gestionar las rutas en MVC:
- Con el enrutamiento de atributos, las rutas se colocan al lado de los métodos de acción que realmente las usarán. Las rutas de atributos ofrecen un poco más de flexibilidad que las rutas convencionales. Sin embargo, en general, las rutas convencionales se utilizan para controladores que sirven páginas HTML y rutas de atributos para controladores que sirven API REST.
- Os dejo parte del código visto en el vídeo:
- Clase HomeController:
Enrutamiento con Atributos:
using Ejemplo1.Models;
using Ejemplo1.ViewModels;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Ejemplo1.Controllers
{
public class HomeController:Controller
{
private IAmigoAlmacen amigoAlmacen;
public HomeController(IAmigoAlmacen AmigoAlmacen)
{
amigoAlmacen = AmigoAlmacen;
}
//public string Index()
//{
// return amigoAlmacen.dameDatosAmigo(3).Email;
//}
//public JsonResult Details()
//{
// Amigo modelo = amigoAlmacen.dameDatosAmigo(1);
// return Json(modelo);
//}
[Route("")]
[Route("Home")]
[Route("Home/Index")]
public ViewResult Index(int id)
{
var modelo = amigoAlmacen.DameTodosLosAMigos();
return View(modelo);
}
[Route("Home/Details/{id?}")]
public ViewResult Details(int? id)
{
DetallesView detalles = new DetallesView();
//Si es nulo forzamo a qque busque los detalles del amigo uno
detalles.amigo= amigoAlmacen.dameDatosAmigo(id?? 1);
detalles.Titulo = "LISTA AMIGOS VIEW MODELS";
detalles.SubTitulo = "XXXXXXXXXXXX";
return View(detalles);
}
}
}
- Clase Startup:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace Ejemplo1
{
public class Startup
{
private IConfiguration _configuration;
public Startup(IConfiguration configuration)
{
_configuration = configuration;
}
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSingleton<IAmigoAlmacen, MockAmigoRepositorio>();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env )
{
if (env.IsDevelopment())
{
DeveloperExceptionPageOptions d = new DeveloperExceptionPageOptions
{
SourceCodeLineCount = 2
};
app.UseDeveloperExceptionPage(d);
}
else if (env.IsProduction() || env.IsStaging())
{
app.UseExceptionHandler("/Error");
}
app.UseStaticFiles();
//app.UseMvcWithDefaultRoute();
app.UseMvc();
//app.UseMvc(routes =>
//{
// routes.MapRoute("default", "{controller=Home}/{action=Index}/{id}");
//});
}
}
}
No hay comentarios:
Publicar un comentario