Skip to content

danielfranciscoz/mvcrazor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Habilitar Runtime Compilation para Razor

instalar Paquete

En startup agregar

services.AddRazorPages().AddRazorRuntimeCompilation();

Conectando con DB

Paquetes Necesarios

dotnet tool install --global dotnet-ef (solo en caso de no tenerlo instalado)

dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add Microsoft.EntityFrameworkCore.SqlServer

Posteriormente será necesario ejecutar el comando que se encarga de Mapear las tablas

dotnet ef dbcontext scaffold "Data Source=server;Initial Catalog=database;Integrated Security=True;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False;" Microsoft.EntityFrameworkCore.SqlServer  -o Models -t tableName -c contextName --context-dir Database -f

Es muy importante aplicar inyección de dependencias para mantener la seguridad de la cadena de conexión

services.AddDbContext<contextName>(o => o.UseSqlServer(Configuration.GetConnectionString("ConnectionName")));

Para agregar los servicios mediante inyección de dependencia

services.AddScoped<IInterfaceName, ClassName>();

Validaciones con DataAnnotations

Para validar los datos enviados desde el cliente, es posible utilizar Etiquetas en los campos de nuestro modelo, podremos validar escenarios como: Requerido, Tamaño Minimo o Maximo, Correo, Patrones, Etc.

[Required]
[EmailFormatValid]
[MaxLength(value)]
[MinLength(value)]
[Range(minValue, maxValue, ErrorMessage = "Here goes your error message")]

Tambien podemos personalizar los mensajes de error con:

[Required(ErrorMessage="Mensaje Personalizado")]

Manejo de datos no encontrados (Error 404 - Not Found)

  • Retornar el método NotFound en el controlador
  • Visualizar el error con el siguiente codigo en el startup
   app.UseStatusCodePages();
  • Podemos mejorar la visualizacion del error, atravez de una vista propia, actualizar en el startup
app.UseStatusCodePagesWithReExecute("/Home/HandleError/{0}");

Agregar en el controlador de home

[Route("/Home/HandleError/{code:int}")]
public IActionResult HandleError(int code)
{
   ViewData["ErrorMessage"] = $"Ocurrio un error, el codigo de error es: {code}";
   return View("~/Views/Shared/HandleError.cshtml");
}

Sesiones de usuario

El manejo de sesiones es importante cuando queremos crear inicios de sesion en nuestra aplicacion, lo primero es habilitarlas en el startup

En la configuracion de los servicios agregar

services.AddSession();

En la configuracion agregar y/o reemplazar

app.UseSession();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Login}/{action=Login}/{id?}");
            });

Posterior agregar el controlador de login con las acciones de login y logout

Al momento de realizar el proceso de login, será necesario validar que el usuario enviado exista y posterior almacenarlo en la session

            if (usuarioExist)
            {
                HttpContext.Session.SetString(VariabledeSesion, NombreUsuario);
                return RedirectToAction("Index", "Home");

            }
            else
            {
                ModelState.AddModelError("", "Datos ingresado no válido.");
            }

            return View(u);

La accion de logout debe limpiar la sesion

    HttpContext.Session.Clear();
   @using (Html.BeginForm("Logout", "Login", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
                            {
                            <a class="nav-link" href="javascript:document.getElementById('logoutForm').submit()">
                                Sign out(@usuarioActual)
                            </a>
                            }

Podremos obtener en la vista el usuario de la sesion de la siguiente manera

@using Microsoft.AspNetCore.Http

@{
    var usuarioActual = Context.Session.GetString("VariableSesion");

}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published