tutoriales informáticos ¿Cómo crear un sitio Web? Aprende a dominar Wordpress Incrementa tu visibilidad (SEO) Servicios de alojamiento web L'actualité, guides et tutoriaux du moment
HébergementWebs.com : L'actualités, guides et tutoriaux du moment
Nuestros servicios
SEO
Wordpress
Sitio Web
Tutoriales

ÁSPID. NET Core: Guía rápida

Tutorial principal de asp.net
2020-11-20 03:40:45

ASP.NET Core - Guia rapida


ASP.NET Core - Descripcion general

ASP.NET Core es el nuevo marco web para Microsoft. Ha sido completamente redisenado para ser rapido, flexible, moderno y funcionar en diferentes plataformas. En el futuro, ASP.NET Core es el marco que se puede utilizar para el desarrollo web con .NET. Si ha tenido experiencia con MVC o API web en los ultimos anos, notara algunas caracteristicas familiares. Al final de este tutorial, tendra todo lo que necesita para comenzar a usar ASP.NET Core y escribir una aplicacion que pueda crear, editar y ver data desde una base de data.

Una breve historia de ASP.NET

ASP.NET se ha utilizado durante muchos anos para desarrollar aplicaciones web. Desde entonces, el marco ha evolucionado de manera constante y finalmente nos llevo a su descendiente mas reciente ASP.NET Core 1.0.

  • ASP.NET Core 1.0 no es una continuacion de ASP.NET 4.6.

  • Es un marco completamente nuevo, un proyecto en paralelo que coexiste con todo lo que sabemos.

  • Esta es una reescritura real del marco actual ASP.NET 4.6, pero mucho mas pequeno y mucho mas modular.

  • Algunas personas piensan que muchas cosas siguen igual, pero esto no es del todo cierto. ASP.NET Core 1.0 es un gran cambio fundamental en el panorama ASP.NET.

¿Que es ASP.NET Core

ASP.NET Core es un marco web de codigo abierto y optimizado para la nube para desarrollo de aplicaciones web modernas que se pueden desarrollar y ejecutar en Windows, Linux y Mac. Incluye el marco MVC, que ahora combina la funcionalidad de MVC y la API web en un solo marco de programacion web.

  • Las aplicaciones ASP.NET Core se puedenxrun en .NET Core o .NET Framework completo.

  • Ha sido disenado para proporcionar un marco de desarrollo optimizado para aplicaciones implementadas en la nube o que se ejecutan en las instalaciones.

  • Consiste en un componente modular con una sobrecarga minima, para que conserve la flexibilidad al crear sus soluciones.

  • Puede desarrollar y ejecutar sus aplicaciones ASP.NET Core multiplataforma en Windows, Mac y Linux.

Beneficios de ASP.NET Core

ASP.NET Core viene con los siguientes beneficios:

  • ASP.NET Core tiene una serie de cambios arquitectonicos que dan como resultado un marco mucho mas ligero y modular.

  • ASP.NET Core ya no se basa en System.Web.dll. Se basa en un conjunto de paquetes NuGet granulares y bien factorizados.

  • Esto le permite optimizar su aplicacion para incLea solo los paquetes de NuGet que necesita.

  • Las ventajas de un area de aplicacion mas pequena incluyen seguridad mas estricta, mantenimiento reducido, rendimiento mejorado y costos reducidos

Con ASP.NET Core puede lograr las siguientes mejoras:

  • Cree y ejecute aplicaciones ASP.NET multiplataforma en Windows, Mac y Linux.

  • Basado en .NET Core, que admite el control de versiones real de aplicaciones en paralelo.

  • Nuevas herramientas que simplifican el desarrollo web moderno.

  • Pila web alineada unica para interfaz de usuario web y API web.

  • Configuracion basada en el entorno lista para la nube.

  • Soporte integrado para inyeccion de dependencia.

  • Tag Helpers que hacen que el marcado de Razor sea mas natural con HTML.

  • Capacidad para alojar en IIS o autohospedar en su propio proceso.

ASP.NET Core: configuracion del entorno

ASP.NET Core es una revision importante de ASP.NET. Este tema presenta nuevos conceptos de ASP.NET Core y como le ayudan a desarrollar aplicaciones web modernas.

Para usar ASP.NET Core en su aplicacion, lo siguiente debe estar instalado en su sistema:

  • Microsoft Visual Studio 2015
  • Microsoft .NET Core 1.0.0 - VS 2015 Tooling Preview 2

Microsoft proporciona una version gratuita de Visual Studio que tambien contiene SQL Server y se puede descargar desde www.visualstudio.com /en-us/downloads/downloadvisual-studio-vs.aspx y Microsoft .NET Core 1.0.0 - VS 2015 Tooling Preview 2 puede ser tdescargado de https: / /go.microsoft.com/fw/? LinkId = 817245. .

Instalacion de Microsoft Visual Studio 2015

Ahora entendamos los pasos para la instalacion

Paso 1 : una vez que descarga completa, ejecute el instalador. La siguiente caja de dialogo aparece.

 ASP.NET Core - Guia rapida

Paso 2 : haga clic en el boton Instalar como en la captura de pantalla anterior. El proceso de instalacion comenzara.

 ASP.NET Core - Guia rapida

Paso 3 - Cuando se complete el proceso de instalacion, aparecera el siguiente cuadro de dialogo.

 ASP.NET Core Quick Guide

Paso 4 : cierre este cuadro de dialogo y reinicia tu computadora si es necesario.

Paso 5 - Abre Visual Studio desde el menu de inicio. Esto abrira el siguiente cuadro de dialogo y tomara un tiempo por primera vez. (solo para la preparacion).

 ASP.NET Core - Guia rapida

Paso 6 : ahora vera la ventana principale de Visual Studio.

Paso 7 : una vez que Visual Studio este instalado, cierre Visual Studio e inicie Microsoft .NET Core 1.0.0 - VS 2015 To oling Preview 2.

 ASP.NET Core - Guia rapida

Paso 8 : marque la casilla y haga clic en Instalar.

 ASP.NET Core Quick Guide

Paso 9 : una vez que se complete la instalacion, vera el siguiente mensaje.

 ASP.NET Core - Guia rapida

Paso 10 : ahora esta listo para iniciar su aplicacion con ASP.NET Core.

ASP.NET Core - Nuevo proyecto

En este capitulo, veremos como crear un nuevo proyecto en Visual Studio.

Una vez que haya instalado las herramientas de Visual Studio 2015, puede comenzar a crear una nueva aplicacion ASP.NET Core desde la opcion de menu Archivo → Nuevo proyecto .

 ASP.NET Core - Guia rapida

En el cuadro de dialogo Nuevo proyecto, vera las siguientes tres plantillas para proyectos web:

  • Aplicacion web ASP.NET - Las plantillas para 'Aplicacion ASP.NET simple.

  • Aplicacion web ASP.NET Core (.NET Core) : esto lo iniciaracon un proyecto compatible multiplataforma que se ejecuta en el marco .NET Core.

  • Aplicacion web ASP.NET Core (.NET Framework) : esto inicia un nuevo proyecto que se ejecuta en .NET Framework estandar bajo Windows.

En el panel izquierdo, seleccione Plantillas → Visual C # → Web y en el panel central seleccione la plantilla de aplicacion web ASP.NET Core (.NET Core). Llamemos a esta aplicacion FirstAppDemo y tambien especifiquemos la ubicacion de su proyecto ASP.NET Core y hagamos clic en Aceptar.

 ASP.NET Core - Guia rapida

En el cuadro cuadro de dialogo anterior, puede seleccionar una plantilla especifica para la aplicacion ASP.NET de las plantillas ASP.NET Core disponibles.

Las plantillas ASP.NET Core actualmente contienen tres plantillas diferentes. Entre estos, la plantilla de aplicacion web le ayudara a tener muchos archivos en su sistema de archivos. Tambien le permite comenzar a usar ASP.NET MVC de inmediato.

Aqui comenzaremos con una plantilla vacia. Nos ayudaria a construirlo desde cero. Seleccionemos la plantilla vacia, apaguemos el host en la nube y hagamos clic en Aceptar.

Visual Studio lanzara el proyecto despues de un tiempo. En la ventana del Explorador de soluciones, vera todos los archivos que estan en este proyecto.

Vamos a lanzar esta aplicacion, puedes hacerlo presionando Ctrl + F5 o yendo al menu Depurar. Despues de ir al menu Depurar, seleccione Iniciar sin depurar .

¡Esta aplicacion solo puede mostrar Hello World! Funciona en localhost: 57741 . En la bandeja del sistema de la ventana, tambien puede ver que IIS Express se esta ejecutando.

 ASP.NET Core - Guia rapida

Y el nombre del sitio es FirstAppDemo . Si programo con ASP.NET con versiones anteriores del marco, como interactuaria con Visual Studio y como Visual Studio usa IIS Express para alojar su aplicacionlicacion, estara familiarizado con todos estos aspectos.

ASP.NET Core - Diseno del proyecto

En este capitulo analizaremos como aparece el proyecto ASP.NET principal en el sistema de archivos y como diferentes archivos y directorios funcionan juntos.

Abramos el proyecto FirstAppDemo creado en el capitulo anterior.

En la ventana del Explorador de soluciones, haga clic con el boton derecho en Solucion y seleccione Abrir carpeta en Explorador de archivos .

 ASP.NET Core - Guia rapida

Ahora vera el directorio raiz que contiene dos archivos: FirstAppDemo.sln y global.json .

 ASP.NET Core - Guia rapida

FirstAppDemo.sln es un archivo de solucion. Visual Studio ha estado usando esta extension durante anos de forma predeterminada, y puede hacer doble clic en el archivo si desea abrir la aplicacion en Studio y trabajar en el.

Tambien existe un archivo global. json . Vamos a abrir este archivo en Visual Studio.

En elarchivo, el parametro del proyecto es significativo. Esta configuracion de proyecto le dice a ASP.NET donde buscar su codigo source y que carpetas contienen sus proyectos.

Hay dos carpetas " src"posiblesparalasourceyuna"carpetadeprueba".Amenosquesusproyectosysuscodigoscortosseencuentrenenunadeestasdoscarpetas,elcodigonoestaradisponibleparalaconstruccion.Puedemodificarlos.ElExploradordeWindowstienelacarpeta“src”enlaunidad.Notienesunacarpetadeprueba.Enlacarpetadeprueba,puedesmovertusproyectosdepruebaunitaria.Hazdobleclicenlacarpeta"src".

" data-srcset="https://www.hebergementwebs.com/image/65/65894f2c61efe8767eb51111a3884a9e.webp/aspid-net-core-guia-rapidaaspid-net-core-guia-rapida-68.webp" type = "image/webp" media = "(min-width: 800px) "> ASP.NET Core - Guia rapida

Puede ver el proyecto FirstAppDemo y la aplicacion web. Ahora haga doble clic en la carpeta.

 ASP.NET Core - Guia rapida

Estos son los centavos rce los archivos de codigo para la aplicacion y tambien puede ver esta estructura de carpetas en la ventana del Explorador de soluciones, porque en la version actual de ASP.NET Core el sistema de archivos determina el contenido de su proyecto.

Si agregaun nuevo archivo en el disco, el archivo se agregara al proyecto. Si elimina un archivo, el archivo se elimina del proyecto. Todo permanece sincronizado y es un poco diferente de las versiones anteriores de ASP.NET Core donde un archivo de proyecto, un archivo proj * .cs, que contenia un manifiesto de todo en el proyecto.

ASP.NET Core tambien compila su aplicacion cuando cambia un archivo o aparece un archivo nuevo.

Ejemplo

Veamos un ejemplo simple abriendo Startup.cs en el editor de texto.

 ASP.NET Core - Guia rapida

Es esta linea codigo que responde a cada solicitud HTTP a su aplicacion y simplemente responde con ¡Hola, mundo!

Cambiemos la cadena en la captura de pantalla anterior para decir " ¡Hola a todos! Esta aplicacion ASP.NET Core ”como se muestra en el siguiente programa.

using System; using System.Collections.Generic; using System.Linq; using System .Tasas.Enhebrado; en Cutilizando Microsoft.AspNetCore.Builder; utilizando Microsoft.AspNetCore.Hosting; utilizando Microsoft.AspNetCore.Http; utilizando Microsoft.Extensions.DependencyInjection; utilizando Microsoft.Extensions.Logging; namespace FirstAppDemo {public class Startup {// El tiempo de ejecucion llama a este metodo. // Utilice este metodo para agregar servicios al contenedor. // Para obtener mas informacion sobre como configurar su aplicacion, // visite http: //go.microsoft.com/fw/? LinkID "=398940" " " " public void ConfigureServices (IServiceCollection services) {} // El tiempo de ejecucion llama a este metodo. // Utilice este metodo para configurar la canalizacion de solicitudes HTTP. Configure public void (aplicacion IApplicationBuilder, entorno IHostingEnvironment, ILoggerFactory loggerFactory) {loggerFactory.AddConsole if (env.IsDevelopment ()) {app.UseDeveloperExceptionPage } app.Run ((context) => {await context.Response.WriteAsync ( "¡Hola mundo! Esta aplicacion ASP.NET Core ");});}}}

Guarde este archivo en el editor de texto presionando Ctrl + S, luego regrese al navegador web y actualice la aplicacion.

 ASP.NET Core - Guia rapida

Ahora puede ver que sus cambios se reflejan en el navegador.

  • Esto se debe a que ASP.NET supervisara sistema de archivos y recompilara automaticamente la aplicacion cuando un archivo cambie. No es necesario crear explicitamente la aplicacion en Visual Studio.

  • De hecho, puede usar un editor completamente diferente, algo como Visual Studio Code.

  • Todo lo que tiene que hacer con Visual Studio es iniciar el servidor web en s 'ejecutandose sin el depurador. Tambien puede presionar Ctrl + F5 y editar archivos, guardar archivos y simplemente actualizar el navegador para ver los cambios.

  • C ' es un buen flujo de trabajo para crear aplicaciones web con un langage compilado como C #.

ASP.NET Core - Project.Json

En este capitulo tenemos el archivo project.json . Este archivo utiliza la notacion de objetos JavaScript para almacenar informacion de configuracion y es este archivo el que realmente es el corazon de una aplicacion .NET. Sin este archivo, no tendria un proyecto ASP.NET Core. Aqui vamos a discutir algunas de las caracteristicas mas importantes de este archivo. Haga doble clic en el archivo project.json .

 ASP.NET Core - Guia rapida

Actualmente, la implementacion del codigo predeterminado en el archivo project.json es la siguiente:

{ "dependencias ": { "Microsoft.NETCore.App ": { "version ": "1.0.0 ", "tipo ": " plataforma "}, " Microsoft.AspNetCore.Diagnostics ": " 1.0.0 ", " Microsoft.AspNetCore.Server.IISIntegration ": " 1.0. 0 ", " Microsoft.AspNetCore.Server.Kestrel ": " 1.0.0 ", " Microsoft.Extensions.Logging.Console ": " 1.0.0 "}, " herramientas ": {" Microsoft.AspNetCore.Server.IISIntegration.Tools ": " 1.0.0-preview2-final "}, " frameworks ": {" netcoreapp1.0 ": {" importa ": [" dotnet5.6 ", " portable-net45 + win8 "]}}, " buildOptions ": {" emitEntryPoint ": true, " preserveCompilationContext ": true}, " runtimeOptions ": {" configProperties ": {" System.GC.Server ": true}}, " publishOptions ": {" include ": [" wwwroot ", " web.config "]}, " s ": {" postpublish ": [" dotnet publish-iis --publish-folder% publish: OutputPath% --framework% publish: FullTargetFramework% "]}}

Como vemos, tenemos la informacion de la version en la parte superior de este archivo. Este es el numero de version que usara su aplicacion cuando la compile.

  • La version es 1.0.0, pero la parte mas importante de este archivo son las dependencias.

  • Si su aplicacion va a hacer un trabajo util, entonces usted enrez necesita bibliotecas y marcos para hacer este trabajo, como almacenar y recuperar data a / desde una base de data o renderizar HTML complicado.

  • Con esta version de ASP.NET Core, todas las dependencias se manejan a traves del administrador de paquetes NuGet.

  • NuGet ha existido en el espacio .NET durante algunos anos, pero ahora la forma principal de administrar todas sus dependencias es usar bibliotecas y marcos que son envuelto como paquetes NuGet.

  • Cualquier paquete NuGet de nivel superior que necesite su aplicacion se almacenara en este archivo project.json.

"Microsoft.AspNetCore.Diagnostics ": "1.0.0 ", "Microsoft.AspNetCore.Server.IISIntegration ": " 1.0.0 ", " Microsoft.AspNetCore.Server.Kestrel ": " 1.0.0 ", " Microsoft.Extensions.Logging.Console ": " 1.0.0

Puede ver que tenemos algunoslas dependencias en este archivo y las dependencias exactas probablemente seran cambiadas por la version final de ASP.NET. Cuando desee agregar una nueva dependencia, por ejemplo, como el marco ASP.NET MVC, escriba facilmente este archivo project.json y tambien obtendra ayuda de IntelliSense , que incluye no solo el nombre del paquete, pero tambien los numeros de version como se muestra en la siguiente captura de pantalla.

ASP.NET Core - Guia rapida

Tambien puede usar la interfaz de usuario haciendo clic con el boton derecho en Referencias en el Explorador de soluciones y luego seleccionando Administrar paquetes NuGet . Ahora puede ver los paquetes instalados actualmente.

 ASP.NET Core - Guia rapida

Estos paquetes son los mismos que aquellos en su archivo project.json y tambien puede ir al navegador y agregar otros paquetes, incluidos los paquetes prelanzados, por ejemplo, el marco MVC instalado en este proyecto.

 ASP .NET Core Quick Guide

Si instala este paquete ahora usando el boton Instalar,entonces este paquete se almacenara en project.json. La seccion de frameworks es otra parte importante de project.json, esta seccion le dice a ASP.NET cual de los frameworks .NET puede usar tu aplicacion.

"frameworks ": { "netcoreapp1.0 ": { "importaciones ": [ "dotnet5.6 ", "portable- net45 + win8 "]}},

En este caso, vera que netcoreapp1.0 "es el marco utilizado en el proyecto, tambien puede incluir el El .NET Framework completo que se instala al instalar Visual Studio.

  • Este es el mismo .NET Framework que se incluye con muchas versiones del sistema operativo Windows.

  • Este es el .NET Framework que existe desde hace 15 anos e incluye el marco de trabajo que hace todo, desde la programacion web hasta la programacion de escritorio.

  • Es un marco enorme que solo funciona en Windows.

  • "netcoreapp1.0 es el marco .NET Core. Es un marco multiplataforma y puede funcionar en diferentes plataformas, no solo Windows sino tambien OS X y Linux.

  • Este marco tiene menos caracteristicas que el marco .NET completo, pero tiene todas las caracteristicas que necesitamos para el desarrollo web ASP.NET Core.

ASP.NET Core - Configuracion

En este capitulo, discutiremos la configuracion relacionada con el proyecto ASP.NET Core. En el Explorador de soluciones, vera el archivo Startup.cs. Si ha trabajado con versiones anteriores de ASP.NET Core, probablemente esperaria ver un archivo global.asax, que era un lugar donde podia escribir codigo para ejecutar al iniciar una aplicacion web.

  • Tambien esperaria ver un archivo web.config que contiene todos los parametros de configuracion que su aplicacion avanecesita funcionar.

  • En ASP.NET Core, estos archivos desaparecen y, en lugar del codigo de configuracion y de inicio, se cargan desde Startup.cs.

  • Hay una class de inicio en el archivo y en esta class puedes configurar tu aplicacion e incluso configurar tus sources de configuracion.

  • Esta es la implementacion predeterminada en el archivo Startup.cs .

    using System; utilizando System.Collections.Generic; utilizando System.Linq; usando System.Threading.Tasks; utilizando Microsoft.AspNetCore.Builder; utilizando Microsoft.AspNetCore.Hosting; utilizando Microsoft.AspNetCore.Http; utilizando Microsoft.Extensions.DependencyInjection; utilizando Microsoft.Extensions.Logging; namespace FirstAppDemo {public class Startup {// El tiempo de ejecucion llama a este metodo. // Utilice este metodo para agregar servicios al contenedor. // Para mas informacioninstrucciones sobre como configurar su aplicacion, // visite http: //go.microsoft.com/fw/? LinkID "=398940" " " " public void ConfigureServices (servicios IServiceCollection) {} // Este metodo es llamado por el tiempo de ejecucion. Utilice este metodo para configurar // la canalizacion de solicitudes HTTP. Configure public void (aplicacion IApplicationBuilder, entorno IHostingEnvironment, ILoggerFactory loggerFactory) {loggerFactory.AddConsole if (env.IsDevelopment ()) {app.UseDeveloperExceptionPage } app.Run ((context) => {await context.Response.WriteAsync ( "¡Hola mundo ");}); }}}

    En la class Startup, hay dos metodos en los que se llevara a cabo la mayor parte de nuestro trabajo. El metodo Configure de la class es donde construyes tu canalizacion de procesamiento HTTP.

    • Esto define como responde su aplicacion a las solicitudes. Actualmente, esta aplicacion solo puede decir ¡Hola mundo! y si queremos que la aplicacion se comporte comoDe lo contrario, necesitaremos cambiar la canalizacion agregando codigo adicional en este metodo Configure.

    • Por ejemplo, si queremos servir los archivos estaticos como un archivo index.html, necesitaremos agregar algo de codigo al metodo Configure.

    • Tambien puede obtener una pagina de error o enrutar solicitudes a un ASP. Controlador NET MVC; estos dos escenarios tambien requeriran trabajar en este metodo Configure.

    • En la class de inicio, tambien vera el metodo ConfigureServices () . Esto le ayuda a configurar los componentes de su aplicacion.

    En este momento tenemos una cadena codificada para cada respuesta: ¡el Hola mundo ! cadena. En lugar de codificar la cadena, queremos cargar esta cadena desde un componente que conoce el texto que queremos mostrar.

    • Este otro componente puede cargar este texto endesde una base de data, servicio web o archivo JSON, sin importar donde se encuentre exactamente.

    • Simplemente vamos a configurar un escenario para que no tengamos esta cadena codificada.

    En el Explorador de soluciones, haga clic derecho en el nodo de su proyecto y seleccione Agregar → Nuevo elemento .

    En el panel izquierdo, seleccione Instalado → Codigo y luego en en el panel central, seleccione el archivo JSON. Llame a este archivo AppSettings.json y haga clic en el boton Agregar como en el anterior.

     ASP.NET Core - Guia rapida

    Tambien podemos decirle a nuestro programa que lea el texto del archivo en lugar de tener la cadena Hello World! en Startup.cs. siguiente codigo en AppSettings.json .

    { "message": "¡Hola, mundo! este mensaje proviene del archivo de configuracion ... "}

    Ahora necesitamos acceder a este mensaje desdeluego el archivo Startup.cs. Aqui esta la implementacion del archivo Startup.cs que leera el mensaje anterior del archivo JSON.

    usando Microsoft.AspNet.Builder; utilizando Microsoft.AspNet.Hosting; utilizando Microsoft.AspNet.Http; utilizando Microsoft. Extensions.DependencyInjection; utilizando Microsoft.Extensions.Configuration; espacio de nombres FirstAppDemo {inicio de class publica {inicio publico () {var builder = new ConfigurationBuilder () .AddJsonFile ( "AppSettings.json "); Configuracion = constructor.Build } Configuracion de IConfiguration publica {get; set;} // Este metodo es llamado por el tiempo de ejecucion. // Utilice este metodo para agregar servicios al contenedor. // Para obtener mas informacion sobre la configuracion de su aplicacion, // visite http: / /go.microsoft.com/fw/?LinkID=398940 public void ConfigureServices (IServiceCollection services) {} // Este metodo es llamado por el motor de ejecucion. // Utilea este metodo para configurar la canalizacion de solicitudes HTTP. Configure public void (aplicacion IApplicationBuilder) {app.UseIISPlatformHandler app.Run ((context) => {var msg = Configuration [ "message"]; espera context.Response.WriteAsync (msg);}); } // Punto de entrada de la aplicacion. public static void Ma in (string args) = 7gt; WebApplication.Run (args); }}

    Ahora iniciemos la aplicacion. Una vez que se ejecuta la aplicacion, producira el siguiente resultado.

     ASP.NET Core - Guia rapida

    ASP.NET Core - Middleware

    En este capitulo, entenderemos como poner configurar middleware. Middleware en ASP.NET Core controla como nuestra aplicacion responde a las solicitudes HTTP. Tambien puede controlar la apariencia de nuestra aplicacion en caso de error, y este es un elemento clave en como autenticamos y autorizamos a un usuario a realizar acciones especificas.

    • Middleware son componentes de softwareels que se ensamblan en una canalizacion de aplicaciones para manejar solicitudes y respuestas.

    • Cada componente elige reenviar la solicitud al siguiente componente de la canalizacion y puede realizar determinadas acciones antes y despues de llamar al siguiente componente de la canalizacion.

    • Los delegados de solicitudes se utilizan para crear la canalizacion de solicitudes. Los delegados de solicitudes manejan cada solicitud HTTP.

    • Cada elemento de middleware en ASP.NET Core es un objeto, y cada elemento tiene una funcion muy especifica, enfocada y limitada.

    • En ultima instancia, necesitamos una gran cantidad de middleware para que una aplicacion se comporte correctamente.

    Supongamos ahora que queremos registrar informacion sobre cada consulta en nuestra aplicacion.

    • En este caso, el primer middleware que podriamos instalar en la aplicacion es un componente de registro.

    • Este registrador puede ver todo acerca de la solicitud entrante, pero hay una buena posibilidad de que un registrador simplemente registre cierta informacion y luego pase esa solicitud al siguiente middleware.

     ASP.NET Core - Guia rapida

    • El El middleware es una serie de componentes presentes en esta canalizacion de procesamiento.

    • El siguiente middleware que hemos instalado en la aplicacion es un autorizador.

    • Un autorizador puede buscar una cookie o tokens de acceso especificos en los encabezados HTTP.

    • Si el autorizador encuentra un token, permite que la solicitud continue. De lo contrario, es posible que el autorizador responda a la solicitud con un codigo de error HTTP o un codigo de redireccionamiento para enviar al usuario a una pagina de conexion.

    • Pero, si no es asi, el autorizador reenvia la solicitud al siguiente middleware que es un enrutador.

    • A el enrutador mira la URL ydmarca su proximo paso de accion.

    • El enrutador busca en la aplicacion algo a lo que responder y si el enrutador no encuentra nada a lo que responder, el enrutador en si puede devolver un error 404 no encontrado .

    Ejemplo

    Ahora tomemos un ejemplo simple para aprender mas sobre middleware. Configuramos el middleware en ASP.NET usando el metodo Configure de nuestra class de inicio .

    usando Microsoft.AspNet.Builder; utilizando Microsoft.AspNet.Hosting; utilizando Microsoft.AspNet.Http; utilizando Microsoft.Extensions.DependencyInjection; utilizando Microsoft.Extensions.Configuration; espacio de nombres FirstAppDemo {inicio de class publica {inicio publico () {var builder = new ConfigurationBuilder () .AddJsonFile ( "AppSettings.json "); Configuracion = constructor.Build } Configuracion de IConfiguration publica {get; juntos; } // Este metodo est llamado por el tiempo de ejecucion. // Utilice este metodo para agregar servicios al contenedor. // Para obtener mas informacion sobre como configurar su aplicacion, // visite http: //go.microsoft.com/fw/? LinkID "=398940" " " " public void ConfigureServices (IServiceCollection services) {} // El tiempo de ejecucion llama a este metodo. // Utilice este metodo para configurar la canalizacion de solicitudes HTTP. Configure public void (aplicacion IApplicationBuilder) {app.UseIISPlatformHandler app.Run ((co ntext) => {var msg = Configuration [ "message"]; espera context.Response.WriteAsync (msg);}); } // Punto de entrada de la aplicacion. public static void Main (string args) => WebApplication.Run (args); }}

    En el metodo Configure () , invocaremos metodos de extension en la interfaz IApplicationBuilder para agregar middleware.

    Hay dos elementos de middleware en un nuevo proyecto vacio de forma predeterminada:

    • IISPlatformHandler
    • Middleware registrado con app.Run

    IISPlatformHandler

    IISPlatformHandler nos permite trabajar con Autenticacion de Windows. Examinara cada solicitud entrante y vera si hay alguna informacion de identidad de Windows asociada con esa solicitud, luego llamara al siguiente middleware.

    Middleware registrado con app.Run

    El siguiente middleware en este caso es el middleware registrado con app.Run . El metodo Run nos permite pasar otro metodo, que podemos usar para procesar cada respuesta. Ejecutar no es algo que vera muy a menudo, es algo que llamamos middleware de terminal.

    El middleware con el que registre Run nunca tendra la oportunidad de llamar a otro middleware, todo lo que hace es recibir una solicitud y luego deberia producir algun tipo de respuesta.

    Tambien tiene acceso a un objeto Response y una de las cosasLo que puede hacer con un objeto Response es escribir una cadena.

    Si desea registrar otro middleware despues de app.Run, nunca se llamara a ese middleware porque, de nuevo, Run es un middleware de terminal. Nunca llamara al proximo middleware.

    Como agregar otro middleware

    Continuemos con los siguientes pasos para agregar otro middleware -

    Paso 1 - Para agregar un otro middleware, haga clic con el boton derecho en el proyecto y seleccione Administrar paquetes NuGet.

    Paso 2 : busque Microsoft.aspnet .diagnostics . Esto es en realidad middleware ASP.NET Core para manejar excepciones, paginas Visualizacion de excepciones e informacion de diagnostico. Este paquete en particular contiene muchos componentes de middleware que podemos usar.

    Paso 3 : instale este paquete si no esta instalado en su proyecto.

    Paso 4 - Ahora sigamos adelanteal metodo Configure () e invoque el middleware app.UseWelcomePage .

    // El tiempo de ejecucion llama a este metodo. // Utilice este metodo para configurar la canalizacion de solicitudes HTTP. Configure public void (aplicacion IApplicationBuilder) {app.UseIISPlatformHandler app.UseWelcomePage app.Run ((context) => {var msg = Configuration [ "message"]; espera context.Response.WriteAsync (msg);}); }

    Paso 5 : inicie su aplicacion y vera la siguiente pantalla de bienvenida.

     ASP.NET Core - Guia rapida

    Esta pantalla de bienvenida puede no ser tan util.

    Paso 6 : probemos algo mas que podria ser un poco mas util. En lugar de usar la pagina de inicio, usaremos RuntimeInfoPage .

    // El tiempo de ejecucion llama a este metodo. // Utilice este metodo para configurar la canalizacion de solicitudes HTTP. Configure public void (aplicacion IApplicationBuilder) {app.UseIISPlatformHandler app.UseRuntimeInfoPage app.Run ((context) => {var msg = Configuration [ "message"]; espera context.Response.WriteAsync (msg);}); }

    Paso 7 : guarde su pagina Startup.cs y actualice su navegador y vera la siguiente pagina.

    Esta RuntimeInfoPage es un middleware que solo respondera a las solicitudes de una URL especifica. Si la solicitud entrante no coincide con esa URL, este middleware simplemente deja la solicitud pasar al siguiente middleware. La solicitud pasara por el middleware IISPlatformHandler, luego ira al middleware UseRuntimeInfoPage. No creara una respuesta, por lo que ira a nuestra aplicacion. Ejecute y mostrara la cadena.

    Paso 8 : agreguemos "/ runtimeinfo " al final de su URL. Ahora vera una pagina producida por este middleware de pagina de informacion de tiempo de ejecucion.

    ASP.NET Core Quick Guide

    Ahora vera una respuesta que le brinda informacionons en su entorno de ejecucion, como sistema operativo, version de ejecucion, arquitectura, tipo y cualquier paquete que este utilizando, etc.

    ASP.NET Core - Excepciones

    En este capitulo, discutiremos excepciones y manejo de errores . Cuando se producen errores en su aplicacion ASP.NET Core, hay varias formas de manejarlos. Veamos otro middleware disponible a traves del paquete de diagnostico. Este middleware nos ayudara a solucionar los errores.

    Para fingir un error, vayamos a app.Run y veamos como se comporta la aplicacion si lanzamos una excepcion cada vez que accedemos a esta pieza de middleware.

    usando Microsoft.AspNet.Builder; utilizando Microsoft.AspNet.Hosting; utilizando Microsoft.AspNet.Http; utilizando Microsoft.Extensions.DependencyInjection; utilizando Microsoft.Extensions.Configuration; espacio de nombres FirstAppDemo {inicio de class publica {inicio publico () {var builder = new ConfigurationBuilder () .AddJsonFile ( "AppSettings.json "); Configuracion = constructor.Build } Configuracion de IConfiguration publica {get; juntos; } // Este metodo es llamado por el tiempo de ejecucion. // Utilice este metodo para agregar servicios al contenedor. // Para obtener mas informacion sobre como configurar su aplicacion, // visite http: //go.microsoft.com/fw/? LinkID "=398940" " " " "public void ConfigureServices (IServiceCollection services) {} // El tiempo de ejecucion llama a este metodo. // Utilice este metodo para configurar la canalizacion de solicitudes HTTP. Configure public void (aplicacion IApplicationBuilder) {app.UseIISPlatformHandler app.UseRuntimeInfoPage app.Run ((context) => {lanzar nueva System.Exception ( "Throw Exception "); var msg = Configuracion [ "mensaje "]; esperar context.Response.WriteAsync (msg);}); } // Punto de entrada de la aplicacion. stati publicoc void Main (string args) => WebApplication.Run (args); }}

    Simplemente lanzara una excepcion con un mensaje muy generico. Guarde la pagina Startup.cs y ejecute su aplicacion.

    Vera que no hemos podido cargar este recurso. Hubo un error HTTP 500, un error interno del servidor y esto no es muy util. Puede resultar util obtener informacion sobre las excepciones.

    Agreguemos otro middleware, que es UseDeveloperExceptionPage .

    // El tiempo de ejecucion llama a este metodo. // Utilice este metodo para configurar la canalizacion de solicitudes HTTP. Configure public void (aplicacion IApplicationBuilder) {app.UseIISPlatformHandler app.UseDeveloperExceptionPage app.UseRuntimeInfoPage app.Run ((context) => {lanzar una nueva System.Exception ( "Throw Exception "); var msg = Configuracion [ "message"]; esperar context.Response.WriteAsync (msg);}); }

    • Este middleware es un poco diferente de otro middleware, otro middleware normalmente mira la solicitud entrante y toma una decision con respecto a esa solicitud.

    • UseDeveloperExceptionPage no se preocupa tanto por las solicitudes entrantes como por lo que sucede mas adelante en el proceso.

    • Esta bien llamar al siguiente middleware, pero tendremos que esperar y ver si algo mas adelante en la canalizacion arroja una excepcion y hay una excepcion, este middleware le dara una pagina de error con informacion adicional sobre esa excepcion.

    Ejecutemos la aplicacion nuevamente. Producira una salida como se muestra en la siguiente captura de pantalla.

     ASP .NET Core Quick Guide

    Ahora vera la informacion que esperaria si hubiera un error de desarrollo. Tambien obtendra un seguimiento de la pila y vera que se ha lanzado una excepcion no controladae en la linea 37 de Startup.cs.

    Tambien puede ver los detalles sin procesar de las excepciones y toda esta informacion puede ser muy util para un desarrollador. De hecho, probablemente solo queremos mostrar esta informacion cuando un desarrollador esta ejecutando la aplicacion.

    ASP.NET Core - Archivos estaticos

    En este capitulo aprenderemos a trabajar con archivos. Una caracteristica importante que casi todas las aplicaciones web necesitan es la capacidad de servir archivos (archivos estaticos) desde el sistema de archivos.

    • Los archivos estaticos como archivos JavaScript, imagenes, archivos CSS que tenemos en el sistema de archivos son los activos que tiene la aplicacion ASP. NET Core se puede usar directamente para los clientes.

    • Los archivos estaticos generalmente se encuentran en la raiz web (wwwroot).

    • De forma predeterminada, este es el unico lugar donde podemos transmitir dLos archivos directamente desde el sistema de archivos.

    Ejemplo

    Ahora tomemos un ejemplo simple en el que entenderemos como podemos servir estos archivos en nuestra aplicacion.

    Aqui queremos agregar un archivo HTML simple a nuestra aplicacion FirstAppDemo y este archivo HTML debe ir a la carpeta raiz web (wwwroot). Haga clic derecho en la carpeta wwwroot en el Explorador de soluciones y seleccione Agregar → Nuevo elemento .

     ASP.NET Core - Guia rapida

    En el panel central, seleccione la pagina HTML y asignele un nombre index.html y haga clic en el boton Agregar .

     ASP.NET Core Quick Guide

    Vera un archivo index.html simple. Agreguemos un texto y un titulo simples como se muestra a continuacion.

    < DOCTYPE span> < charset = "utf-8" /> Bienvenido a ASP. NET Core ¡Hola, Wolrd! Este mensaje es de nuestro primer archivo HTML estatico.

    Cuando ejecuta su aplicacioncation y navegue a index.html en el navegador, vera que el middleware app.Run arroja una excepcion porque no hay nada actualmente en nuestra aplicacion.

    No hay ningun middleware que busque un archivo en el sistema de archivos para servir. Para resolver este problema, navegue hasta a NuGet Package Manager haciendo clic con el boton derecho en el proyecto en el Explorador de soluciones y seleccionando Administrar paquetes NuGet.

     ASP.NET Core - Guia rapida

    Busque Microsoft.AspNet.StaticFiles que encontrara el middleware para los archivos estaticos. este paquete nuget y ahora deberiamos tener algunos metodos adicionales que podemos usar para registrar el middleware en el metodo Configure.

    Agreguemos UseStaticFiles en el medio del metodo Configure como se muestra en el programa siguiente.

    usando Microsoft.AspNet.Builder; usando Microsoft.AspNet.Hosting; usando utileyendo Microsoft.AspNet.Http; utilizando Microsoft.Extensions.DependencyInjection; utilizando Microsoft.Extensions.Configuration; espacio de nombres FirstAppDemo {inicio de class publica {inicio publico () {var builder = new ConfigurationBuilder () .AddJsonFile ( "AppSettings.json "); Configuracion = constructor.Build } Configuracion de IConfiguration publica {get; juntos; } // Este metodo es llamado por el tiempo de ejecucion. // Utilice este metodo para agregar servicios al contenedor. // Para obtener mas informacion sobre como configurar su aplicacion, // visite http: //go.microsoft.com/fw/? LinkID "=398940" " " " public void ConfigureServices (IServiceCollection services) {} // El tiempo de ejecucion llama a este metodo. // Utilice este metodo para configurar la canalizacion de solicitudes HTTP. Configure public void (aplicacion IApplicationBuilder) {app.UseIISPlatformHandler app.UseDeveloperExceptionPage app.UseRuntimeInfoPage app.UseStaticFiles app.Run ((contexto) =>{lanzar nueva System.Exception ( "Lanzar excepcion "); var msg = Configuracion [ "mensaje "]; esperar context.Response.WriteAsync (msg);}); } // Punto de entrada de la aplicacion. public static void Main (string args) => WebApplication.Run (args); }}

    A menos que anule las opciones y pase algunos parametros de configuracion diferentes, los archivos estaticos haran que una consulta determinada vea la ruta de la consulta . Esta ruta de consulta luego se compara con el sistema de archivos y lo que hay en el sistema de archivos.

    • Si el archivo estatico ve un archivo que puede usar, servira ese archivo y no llamara al siguiente middleware.

    • Si no puede encontrar un archivo coincidente, continuara con la siguiente pieza de middleware.

    Guardemos el archivo Startup.cs y actualice su navegador.

     ASP.NET Core - Guia rapida

    Ahora puedeNo veo el archivo index.html. Todo lo que ponga en cualquier lugar de wwwroot, cualquier archivo JavaScript, CSS o HTML, puede servirlo.

    • Ahora, si desea que index.html sea su archivo predeterminado, esta es una caracteristica que IIS siempre ha tenido.

    • Todos los metodos pueden proporcionar a IIS una lista de archivos predeterminados para buscar. Si alguien llega a la raiz de un directorio o, en este caso, a la raiz del sitio web, e IIS encuentra algo llamado index.html, automaticamente entregara ese archivo.

    • Ahora comencemos por hacer algunos cambios. Primero, necesitamos eliminar el error forzado y luego agregar otro middleware, que es UseDefaultFiles. La siguiente es la implementacion del metodo Configure.

    // Este metodo es llamado por el tiempo de ejecucion. // Utilice este metodo para configurarla canalizacion de solicitudes HTTP. Configure public void (aplicacion IApplicationBuilder) {app.UseIISPlatformHandler app.UseDeveloperExceptionPage app.UseRuntimeInfoPage app.UseDefaultFiles app.UseStaticFiles app.Run ((context) => {var msg = Configuration [ "message"]; espera context.Response.WriteAsync (msg);}); }

    • Este middleware examinara una solicitud entrante y vera si es la raiz de un directorio y si es hay archivos predeterminados correspondientes.

    • Puede anular las opciones de este middleware para indicarle que archivos predeterminados buscar, pero Index.html es uno de los archivos predeterminados por defecto.

    Guardemos el archivo Startup.cs y vayamos a la raiz de la aplicacion web en su navegador.

     ASP.NET Core - Guia rapida

    Ahora puede ver que index.html es su archivo predeterminado. El orden en el que instala el middleware es importante porque si vSi tuviera UseDefaultFiles despues de UseStaticFiles, no obtendria el mismo resultado.

    Si va a utilizar UseDefaultFiles y UseStaticFiles, es posible que tambien desee otra pieza de middleware que este en el paquete Microsoft.aspnet.staticfiles, NuGet, y que sea el middleware de FileServer . Esto basicamente incluye los archivos predeterminados y los archivos estaticos en el orden correcto.

    // El tiempo de ejecucion llama a este metodo. // Utilice este metodo para configurar la canalizacion de solicitudes HTTP. Configure public void (aplicacion IApplicationBuilder) {app.UseIISPlatformHandler app.UseDeveloperExceptionPage app.UseRuntimeInfoPage aplicacion. UseFileServer app.Run ((context) => {var msg = Configuration [ "message"]; espera context.Response.WriteAsync (msg);}); }

    Hagamos una copia de seguridad del archivo Startup.cs nuevamente. Una vez que actualice el navegador, vera el mismo resultado.como se muestra en la siguiente captura de pantalla.

    ASP.NET Core - Configurar MVC

    En este capitulo, configuraremos el marco MVC en nuestra aplicacion FirstAppDemo. hacer esto construyendo una aplicacion web sobre ASP.NET Core, y mas especificamente, el marco ASP.NET Core MVC. Tecnicamente podemos construir una aplicacion completa usando solo middleware, pero ASP.NET Core MVC nos brinda la funcionalidad que que podemos usar para crear facilmente paginas HTML y API basadas en HTTP.

    Para configurar el marco MVC en nuestro proyecto vacio, siga estos pasos:

    • Instale el paquete Microsoft.AspNet.Mvc , que nos da acceso a los ensamblados y classs proporcionados por el marco.

    • Una vez instalado el paquete necesitamos registrar todos los servicios que necesita ASP.NET MVC en tiempo de ejecucion, lo haremos en el metodo ConfigureServ.hielos .

    • Finalmente, necesitamos agregar middleware para que ASP.NET MVC reciba solicitudes. Basicamente, este middleware toma una solicitud HTTP e intenta dirigir esa solicitud a una class C # que estaremos escribiendo.

    Paso 1 : acceda al Administrador de paquetes NuGet haciendo clic con el boton derecho en Administrar paquetes NuGet. Instale el paquete Microsoft.AspNet.Mvc, que nos da acceso a los ensamblados y classs proporcionados por el marco.

     ASP.NET Core - Guia rapida

    Paso 2 : una vez instalado el paquete Microsoft.AspNet.Mvc, necesitamos registrar todos los servicios requeridos por ASP.NET Core MVC en tiempo de ejecucion. Lo haremos con el metodo ConfigureServices. Tambien agregaremos un controlador simple y veremos la salida de ese controlador.

    Agreguemos una nueva carpeta a este proyecto y llamemosla Controladores . En esta carpeta podemos colocar varios controladores como se muestra a continuacionen el Explorador de soluciones.

    Ahora haga clic derecho en la carpeta Controladores y seleccione la opcion de menu Agregar → Clase .

     ASP.NET Core - Guia rapida

    Paso 3 : aqui queremos agregar una class C # simple, y llamar a esta class HomeController , luego hacer clic en el Agregar boton como en la captura de pantalla anterior.

     Guia rapida de ASP.NET Core

    Esta sera nuestra pagina predeterminada.

    Paso 4 : definamos solo una metodo publico que devuelve una cadena y llamemos a ese metodo de indice como se muestra en el siguiente programa.

    using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; espacio de nombres FirstAppdemo.Controllers {public class HomeController {cadena publica Index () {return "¡Hola, mundo! este mensaje es de Home Controller ...}}}

    Paso 5 : cuando vaya a la raiz del sitio web, querra ver la respuesta del controlador. De ahora en adelanteservira nuestro archivo index.html.

    Vayamos a la raiz del sitio web y eliminemos index.html. Queremos que el controlador responda en lugar del archivo index.html .

    Paso 6 : ahora vaya al metodo Configure en la class Startup y agregue la pieza de middleware UseMvcWithDefaultRoute .

     ASP.NET Core - Guia rapida

    Paso 7 : ahora actualice la aplicacion en la raiz del sitio web.

     ASP.NET Core - Guia rapida

    Encontrara un error 500. 'indica que el marco no pudo encontrar los servicios ASP.NET Core MVC requeridos.

    El propio ASP.NET Core Framework esta formado por diferentes componentes pequenos que tienen responsabilidades muy especificas.

    Por ejemplo, hay un componente que necesita ubicar e instanciar el controlador.

    Este componente debe estar en la coleccion de servicios para que ASP.NET Core MVC funcione correctamente.

    Paso 8 : ademas de agregar el paquete NuGet y el middleware, tambien necesitamos agregar el servicio AddMvc ens los ConfigureServices. Aqui esta la implementacion completa de la class Startup.

    usando Microsoft.AspNet.Builder; utilizando Microsoft.AspNet.Hosting; utilizando Microsoft.AspNet.Http; utilizando Microsoft.Extensions.DependencyInjection; utilizando Microsoft.Extensions.Configuration; espacio de nombres FirstAppDemo {inicio de class publica {inicio publico () {var builder = new ConfigurationBuilder () .AddJsonFile ( "AppSettings.json "); Configuracion = constructor.Build } Configuracion de IConfiguration publica {get; juntos; } // Este metodo es llamado por el tiempo de ejecucion. // Utilice este metodo para agregar servicios al contenedor. // Para obtener mas informacion sobre como configurar su aplicacion, // visite http: //go.microsoft.com/fw/? LinkID "=398940" " " " "public void ConfigureServices (servicios de IServiceCollection) {services.AddMvc } // Este metodo es llamado por el tiempo de ejecucion. // Utilice este metodo para configurarla canalizacion de solicitudes HTTP. Configure public void (aplicacion IApplicationBuilder) {app.UseIISPlatformHandler app.UseDeveloperExceptionPage app.UseRuntimeInfoPage app.UseFileServer app.UseMvcWithDefaultRoute app.Run ((context) => {var msg = Configuration [ "message"]; espera context.Response.WriteAsync (msg);}); } // Punto de entrada de la aplicacion. public static void Main (string args) => WebApplication.Run (args); }}

    Paso 9 : guarde el archivo Startup.cs y vaya al navegador y actualicelo. Ahora recibira una respuesta de nuestro controlador domestico .

     ASP.NET Core - Guia rapida

    ASP.NET Core - Plantilla de diseno MVC

    El patron de diseno Modelo-Vista-Controlador (MVC) es un patron de diseno que ha existido durante algunas decadas y se ha utilizado en muchas tecnologias diferentes, desde Smalltalk hasta C ++, Java y ahora en C # y .NET como plantilla de diseno para uUtilice esto cuando este creando una interfaz de usuario.

    • El patron de diseno MVC es un patron de diseno popular para la capa de interfaz de usuario de una aplicacion de software.

    • En aplicaciones mas grandes, normalmente se combina una capa de interfaz de usuario modelo-vista-controlador con otros modelos de diseno en la aplicacion, como modelos de acceso a data y modelos de mensajeria.

    • Todos estos se combinaran para crear la pila completa de aplicaciones.

    La MVC separa la interfaz de usuario (UI) de una aplicacion en las siguientes tres partes:

    • El modelo : un conjunto de classs que describe los data con los que esta trabajando, asi como la logica empresarial.

    • Ver : define como se mostrara la interfaz de usuario de la aplicacion. VS es HTML puro que decide como se vera la interfaz de usuario.

    • El controlador : un conjunto de classs que administra la comunicacion del usuario, el flujo general de la aplicacion y la logica especifica. a la aplicacion.

    Idea detras de MVC

    Ahora entendamos la idea detras de MVC.

    • La idea es que tenga un componente llamado vista que es el unico responsable de renderizar esta interfaz de usuario, ya sea en HTML o en realidad un widget de interfaz de usuario en una aplicacion de escritorio.

    • La vista habla con un modelo, y ese modelo contiene todos los data que la vista necesita mostrar.

    • En una aplicacion web, es posible que la vista no tenga ningun codigo asociado.

    • Solo puede contener HTML, luego expresiones que indiquen donde tomar los data de la plantilla e insertarlos en los lugares correctos en la plantilla HTML que tiene.vista integrada.

     ASP.NET Core - Guia rapida

    • El controlador organiza todo. Cuando llega una solicitud HTTP para una aplicacion MVC, la solicitud se enruta a un controlador, entonces le corresponde al controlador hablar con la base de data, el sistema de archivos o el modelo.

    En MVC, el controlador recibe una solicitud HTTP, el controlador debe averiguar como recopilar la informacion para responder a esta solicitud. Tal vez el usuario este dirigiendo el navegador a la URL / libros de la aplicacion. Por lo tanto, el controlador debe recopilar la informacion para mostrar un lista de libros. En este escenario, el controlador creara un modelo.

     ASP.NET Core - Guia rapida

    • El modelo no sabe nada sobre la solicitud HTTP o el controlador.

    • El modelo solo es responsable de mantener la informacion sobre los libros que el usuario desea ver , asi como la logica asociada con esta lista de libros.

    • El modelo es solo otra classC # que podemos usar y es posible que tenga mas de una class si tiene un modelo complejo.

    • Una vez que el modelo esta ensamblado, el controlador puede seleccionar una vista para renderizar el modelo.

    • La vista tomara la informacion del modelo, como todos los libros y el titulo de cada libro, etc., y usara esa informacion para construir una pagina HTML.

    • Luego, este HTML se devuelve al cliente en la respuesta HTTP y se completa toda la solicitud HTTP y la transaccion de respuesta.

    Estos son los conceptos basicos del patron de diseno MVC y la idea detras de este patron es mantener una separacion de preocupaciones. Por lo tanto, el controlador solo es responsable de tomar una solicitud y crear un modelo. Es el modelo que lleva la logica y los data que necesitamos a la vista. Entonces, la vista solo es responsable de transformar ese modelo en HTML.

    ASP.NET Core - Enrutamiento

    En el marco MVC, tenemos tres componentes, cada uno con su propio enfoque en uno que es parte del trabajo. Para que todo esto funcione, necesitamos encontrar una manera de enviar estas solicitudes HTTP al controlador correcto. En ASP.NET Core MVC, este proceso se denomina enrutamiento. El enrutamiento es el proceso de dirigir una solicitud HTTP a un controlador.

    Ahora veamos como enrutar solicitudes a diferentes controladores.

    • El middleware ASP.NET Core necesita una forma de determinar si una solicitud HTTP determinada debe ir a un controlador para su procesamiento o no.

    • El middleware MVC tomara esta decision basandose en la URL y cierta informacion de configuracion que proporcionamos. En este capitulo definiremos esta informacion de configuracion o puede decir informacion de enrutamiento en Startup.cs cuando agreguemos el middleware MVC.

    • EsteEl enfoque a menudo se denomina enrutamiento basado en convenciones. Aqui hay un fragmento de codigo para el enrutamiento convencional.

    routeBuilder.MapRoute ( "Default ", "{controller = Home} / {action = Index} / {id ?} ");

    • En este enfoque, definimos patrones que le dicen a MVC como mirar una URL y encontrar un nombre de controlador y un nombre de accion donde un controlador es una class C # y una accion es un metodo publico en esa class.

    En el ultimo capitulo, creamos un controlador (HomeController) en nuestra aplicacion que es una class C # y que no no necesita derivarse de una class base o implementar una interfaz o tener un atributo especial. Es una class C # simple con un nombre, HomeController, y contiene el metodo Index que devuelve una cadena.

    using System; utilizando System.Collections.Generic; uso de System.Linq; uso de System.Threading.Tasks; espacio de nombres FirstAppdemo.Controllers {public class HomeController {public string Index () {return "¡Hola, mundo! Este mensaje es de Home Controller ...}}}

    Aqui nos centraremos en enrutamiento a controladores . Tambien intentaremos comprender como funciona el enrutamiento.

    Ahora volvamos a la class de inicio donde configuramos el middleware MVC en nuestra aplicacion. En el metodo Configure, usamos un metodo UseMvcWithDefaultRoute .

    public void Configure (aplicacion IApplicationBuilder) {app.UseIISPlatformHandler app.UseDeveloperExceptionPage app.UseRuntimeInfoPage app.UseFileServer app.UseMvRoute app.Run ((contexto) => {var msg = Configuracion [ "mensaje "]; espera context.Response.WriteAsync (msg);});}

    Esto nos da unaregla de enrutamiento predeterminada que nos permite acceder al HomeController . En lugar de usar UseMvcWithDefaultRoute , usemos UseMvc , luego configuremos la ruta en este punto usando un metodo llamado ConfigureRoute . La siguiente es la implementacion del archivo Startup.cs.

    usando Microsof t.AspNet.Builder; utilizando Microsoft.AspNet.Hosting; utilizando Microsoft.AspNet.Http; utilizando Microsoft.Extensions.DependencyInjection; utilizando Microsoft.Extensions.Configuration; utilizando Microsoft.AspNet.Routing; usando el sistema; espacio de nombres FirstAppDemo {inicio de class publica {inicio publico () {var builder = new ConfigurationBuilder () .AddJsonFile ( "AppSettings.json "); Configuracion = constructor.Build } Configuracion de IConfiguration publica {get; juntos; } // Este metodo es llamado por el tiempo de ejecucion. // Utilice este metodo para agregar servicios al contenedor. // Paramas informacion sobre como configurar su aplicacion, // visite http: //go.microsoft.com/fw/? LinkID "=398940" " " " public void ConfigureServices (Servicios de IServiceCollection) {services.AddMvc } // Este metodo es llamado por el tiempo de ejecucion. // Utilice este metodo para configurar la canalizacion de solicitudes HTTP. Configure public void (aplicacion IApplicationBuilder) {app.UseIISPlatformHandler app.UseDeveloperExceptionPage app.UseRuntimeInfoPage app.UseFileServer app.UseMvc (ConfigureRoute); app.Run ((context) => {var msg = Configuration [ "message"]; espera context.Response.WriteAsync (msg);}); } private void ConfigureRoute (IRouteBuilder routeBuilder) {// Inicio / Index routeBuilder.MapRoute ( "Default ", "{controller = Home} / {action = Index} / {id?} "); } // Punto de entrada de la aplicacion. public static void Main (string args) => WebApplication.Run (args); }}

    En el metodo ConfigureRoute , puedeconfigura tus rutas; puede ver que este metodo debe tomar un parametro de tipo IRouteBuilder. El proposito del enrutamiento es describir las reglas que ASP.NET Core MVC usara para procesar una solicitud HTTP y encontrar un controlador capaz de responder a esa solicitud.

    • Puede tener una ruta que pueda asignar solicitudes a diferentes controladores.

    • Podemos decirle a routeBuilder que queremos mapear una nueva ruta y su nombre es "Predeterminado " y luego proporcionar la informacion de enrutamiento mas importante, que es la modelo.

    • El patron es una cadena y describira a ASP.NET Core MVC como separar una URL.

    • En el ultimo ejemplo, agregamos un HomeController, por lo que tambien puede solicitar una de las siguientes URL, y tambien seran dirigidas a la accion Index en el HomeController.

      • http: // localhost: " " 49940
      • http: // localhost: " " 49940 / Inicio
      • http: // localhost: " " 49940 / Inicio / Índice
    • Cuando un navegador solicita http: // mi sitio " / o http: // mi sitio " / Inicio , devuelve el resultado del metodo Index de HomeController.

    • Tambien puede probar esto cambiando la URL en el navegador. En este ejemplo es http: // localhost: " " 49940 /, excepto el puerto que puede ser diferente.

    • Si agrega / Inicio o / Inicio / URL de indice y presiona el boton Enter, vera el mismo resultado.

    • El signo de interrogacion al final del ID significa que este parametro es opcional. En otras palabras, ASP.NET Core MVC no necesita ver algun tipo de ID aqui, que puede ser un numero, una cadena o un GUID.

    O ejecutamos la aplicacion en el navegador. Una vez que se inicia la aplicacion, vera el siguiente resultado.

     ASP.NET Core - Guia rapida

    Puedes verAparece un mensaje de la aplicacion. Ejecute el middleware, y la razon por la que recibimos este mensaje es que el middleware MVC ha visto esta URL. Esta fue una solicitud a la raiz del sitio web, que no pudo encontrar un nombre de controlador o un nombre de accion en la URL. La raiz del sitio web abandono el procesamiento de esta solicitud y la envio al siguiente middleware, que es el codigo app.Run . El modelo de carretera que especificamos es silencioso a diferencia del modelo predeterminado.

    En la plantilla predeterminada, hay valores predeterminados para aplicar si no se encuentran un controlador y un nombre de accion. Si llega una solicitud a la raiz del sitio web, el nombre del controlador predeterminado seria Inicio. Puede reemplazarlo con cualquier otro controlador que desee y el nombre de accion predeterminado puede ser Index. Tambien puede cambiar la accion predeterminada si lo desea, como se muestra en el siguiente programa.

    private void ConfigureRoute (IRouteBuilder routeBuilder) {// Inicio / Index routeBuilder.MapRoute ( "Default ", "{controller = Home} / {action = Index} / {id?} "); }

    Si llega una solicitud a la raiz del sitio web, MVC no ve un tipo de URL de controlador / accion, pero puede usar estos valores predeterminados.

    Guardemos el archivo Startup.cs y actualice el navegador en la raiz del sitio web.

    ASP.NET Core - Guia rapida

    Ahora vera una respuesta de su controlador y tambien puede ir a / home que invocara la accion predeterminada, que es index. Tambien puede vaya a / home / index y ahora MVC extraera el nombre del controlador y el nombre de la accion de la URL.

    Creemos otro controlador agregando otra class y llamemoslo AboutController .

    Agreguemos algunos Metodos de accion simples que devolveran la cadena como se muestra en el siguiente programa.

    usando Syvastago; utilizando System.Collections.Generic; utilizando System.Linq; usando System.Threading.Tasks; espacio de nombres FirstAppDemo.Controllers {public class AboutController {public string Phone () {return "+ 49-333-3333333} public string Country () {return " Germany}}}

    En este controlador, puede ver dos metodos de accion: Telefono y Pais, que devolveran un numero de telefono y un nombre de pais respectivamente. Entraremos en HTML sofisticado mas tarde. Guardemos este archivo y especifiquemos / about / phone al final de la URL raiz.

    Puedes vea el numero de telefono como en la captura de pantalla anterior. Si especifica / about / country , tambien vera el nombre del pais.

     ASP.NET Core - Guia rapida

    Si navega a / about , volvera al middleware y accedera a su aplicacion. Ejecute el middleware y vera la siguiente pagina.

    Aqui ASP.NET Core MVC accede a AboutController, pero no encuentra una accion especificada, por lo que sera porÍndice predeterminado y este controlador no tiene un metodo de indice y luego la solicitud ira al siguiente middleware.

    ASP.NET Core - Rutas de atributo

    En este capitulo vamos a aprender otro enfoque del enrutamiento y es el enrutamiento basado en atributos. Con el enrutamiento basado en atributos, podemos usar atributos de C # en nuestras classs de controlador y en los metodos internos en esas classs. Estos atributos tienen data que le indican a ASP.NET Core cuando llamar a un controlador especifico.

    • Es una alternativa al enrutamiento basado en convenciones.

    • Las rutas se evaluan en el orden en que aparecen, el orden en el que las guarda, pero es bastante comun mapear multiples rutas, especialmente si desea tener diferentes parametros en la URL o si desea tener diferentes literales en la URL.

    Ejemplo

    Tomemos un ejemplo sencillo. Abra el proyecto FirstAppDemo y ejecute la aplicacion en el navegador. Cuando especifica / about , producira la siguiente salida:

    ASP.NET Core - Guia rapida

    Lo que queremos aqui es que cuando especificamos / about , la aplicacion debe llamar al telefono que ejecuta AboutController . Aqui podemos aplicar algunas rutas explicitas para este controlador usando un atributo de Ruta. Este atributo se encuentra en el espacio de nombres Microsoft.AspNet.Mvc .

    La siguiente es la implementacion de AboutController en la que se agregan rutas de atributos.

    usando Microsoft.AspNet.Mvc; usando el sistema; utilizando System.Collections.Generic; utilizando System.Linq; usando System.Threading.Tasks; espacio de nombres FirstAppDemo.Controllers {[Ruta ( "sobre ")] class publica AboutController {[Ruta ( ")] cadena publica Telefono () {return "+ 49-333-3333333} [Ruta (" pais ")] cuerdae public Country () {return "Germany}}}

    Aqui queremos que esta ruta se vea aproximadamente y para la accion Phone hemos especificado una cadena vacia, lo que significa que no es necesario especificar la accion para obtener este metodo. El usuario solo tiene que ir a / acerca de. Para la accion Pais, especificamos el "pais" en el atributo de ruta . Permitanos registrar AboutController, actualizar su navegador y navegar hacia / sobre y deberia darle la accion Telefono.

     ASP.NET Core Quick Guide

    Especifiquemos el / about / country . permitira el acceso a esta accion de pais.

     ASP.NET Core - Guia rapida

    Si desea que un segmento de la URL contenga el nombre de su controlador, lo que puede hacer es use el nombre del controlador explicitamente, puede usar un controlador de token dentro de los corchetes. Esto le dice a ASP.NET MVC que use el nombre de ese controlador en esta posicion, como se muestra en el siguiente programa.

    usando Microsoft.AspNet.Mvc; usando el sistema; usando System.Collections.Generic; usando System.Linq; usando System.Threading.Tasks; espacio de nombres FirstAppDemo.Controllers {[Route (" [controlador] " )] public class AboutController {[Route ( ")] public string Phone () {return "+ 49-333-3333333} [Route (" [action] ")] public string Country () {return "Alemania}}}

    De esa manera, si alguna vez cambia el nombre del controlador, no tiene que acordarse de cambiar la ruta. Lo mismo ocurre con una accion e implicitamente hay tiene una barra inclinada (/) entre el controlador y la accion. Esta es una relacion jerarquica entre el controlador y la accion, tal como aparece en la URL. Guardemos de nuevo este controlador. Lo mas probable es que vea los mismos resultados.

     ASP.NET Core - Guia rapida

    Vamos a especificar el / about / pais. Esto le permitira acceder a esta accion de pais.

    ASP.NET Core - Guia rapida

    ASP.NET Core - Resultados de la accion

    En este capitulo discutiremost los resultados de la accion. En los capitulos anteriores, usamos classs de C # simples y directas como controladores. Estas classs no se derivan de una class base y puede utilizar este enfoque con MVC, pero es mas comun derivar un controlador de una class base de controlador proporcionada en el espacio de nombres. Microsoft.AspNet.Mvc.

    • Esta class base nos da acceso a mucha informacion contextual sobre una consulta, asi como a metodos que nos ayudan a generar resultados para ser devuelto al cliente.

    • Puede devolver cadenas individuales y numeros enteros en una respuesta. Tambien puede devolver objetos complejos como un objeto para representar a un estudiante o una universidad o un restaurante, etc. y todos los data asociados con ese objeto.

    • Estos resultados generalmente se encapsulan en un objeto que implementa la interfaz IActionResult.

    • Hay muchos tipos de resultados diferentes que implementan esta interfaz: tipos de resultados que pueden contener plantillas o el contenido de un archivo para su propia carga.

    • Estos diferentes tipos de resultados pueden permitirnos devolver JSON a un cliente o XML o una vista que construya HTML.

    Las acciones esencialmente devuelven diferentes tipos de resultados de accion. La class ActionResult es la base para todos los resultados de las acciones. Aqui hay una lista de diferentes tipos de resultados de acciones y su comportamiento.

    Nombre Behavior
    ContentResult Devuelve una cadena
    FileContentResult Devuelve el contenido del archivo
    FilePathResult Devuelve el contenido del archivo
    FileStreamResult Devuelve el contenido de la fidar un vuelco.
    EmptyResult No devuelve nada
    JavaScriptResult Devuelvelo para ejecucion
    JsonResult Devuelve data en formato JSON
    RedirectToResult Redirige a la URL especificada
    HttpUnauthorizedResult Devuelve el codigo de estado HTTP 403
    RedirectToRouteResult Redirigir a accion diferente / accion de controlador diferente
    ViewResult Recibido como respuesta para motor de visualizacion
    PartialViewR esult Recibido en respuesta al motor de visualizacion

    Ejemplo 1

    Tomemos un ejemplo simple abriendo HomeController y derivelo de la class basada en controlador. Esta class base se encuentra en el espacio de nombres Microsoft.AspNet.Mvc . Aqui esta la implementacion de la class HomeController.

    usando Microsoft.AspNet.Mvc; usando el sistema; usando System.Collections.Generic; usando System.Linq; usando System.Threading.Tasks; espacio de nombres FirstAppdemo.Controllers {public class HomeController: Controller {public ContentResult Index () {return Content ( "¡Hola, mundo! Este mensaje proviene del controlador de inicio utilizando el resultado de la accion ");}}}

    Ahora puede ver que el El metodo index devuelve ContentResult, que es uno de los tipos de resultados, y todos estos tipos de resultados finalmente implementan una interfaz, que es ActionResult .

    En el Metodo Index, pasamos una cadena al metodo Content. Este metodo Content produce un ContentResult; esto significa que el metodo Index ahora devolvera ContentResult .

    Guardemos la class HomeController y ejecute la aplicacion en el navegador. Producira la siguiente pagina.

     ASP.NET Core - Guia rapida

    Ahora puede ver una respuesta qui no suena diferente a la respuesta que teniamos antes. Siempre sera una respuesta de texto sin formato.

    • Es posible que se pregunte cual es el beneficio de usar algo que produce un ActionResult .

    • La ventaja tipica es que este es solo un medio formal de encapsular la decision del controlador.

    • El controlador decide que hacer a continuacion, devolver una cadena o HTML, o devolver un objeto de plantilla que podria serializarse como JSON, etc.

    • Todo lo que el controlador tiene que hacer es tomar esa decision, y el controlador no tiene que escribir los resultados de su decision directamente en la respuesta.

    • Solo necesita devolver la decision, luego es el marco el que tomara un resultado y descubrira como convertir ese resultado en algo que se pueda devolver a traves de HTTP.

    Ejemplo 2

    Tomemos otro ejemplo. Creadoz una nueva carpeta en el proyecto y asignele el nombre Plantillas . En la carpeta Modelos, queremos agregar una class que pueda representar a un empleado.

    Introduzca Employee.cs en el campo Nombre como en la captura de pantalla anterior. Aqui, la implementacion de la class Empleado contiene dos propiedades.

    usando System; usando System.Collections.Generic; usando System.Linq; usando System.Threading.Tasks; espacio de nombres FirstAppDemo.Models {public class Employee {public int ID {get; set; } public string Name {get; set}}}

    En el metodo de accion Index de HomeController , queremos devolver un objeto Employee. Aqui esta la implementacion de HomeController .

    usando FirstAppDemo.Models; usando Microsoft.AspNet.Mvc; usando system; usando System.Collections.Generic; usando System.Linq; usando System.Threading .Tasks; espacio de nombres FirstAppdemo.Controllers {public class HomeController: Controller {Public ObjectResult Index () {var employee = new Employee {ID = 1, Name = "Mark Upston "}; devuelve un nuevo ObjectResult (empleado); }}}

    Ahora, en lugar de devolver el contenido, devolveremos un tipo diferente de resultado que se conoce como ObjectResult . Si queremos un ObjectResult, necesitamos crear o instanciar un ObjectResult y pasarle un objeto modelo .

    • Un ObjectResult es especial en el marco MVC porque cuando devolvemos un ObjectResult, el marco MVC mira ese objeto. Este objeto debe estar representado en la respuesta HTTP.

    • Este objeto debe serializarse como XML o JSON o algun otro formato y, en ultima instancia, la decision se tomara en funcion de la informacion de configuracion que proporcione al MVC al inicio. Si no configura nada, solo obtiene algunos valores predeterminados, y el valor predeterminado es una respuesta JSON.

    GrabadoTransmita todos sus archivos y actualice el navegador. Vera la siguiente salida.

    ASP.NET Core - Vistas

    En una aplicacion ASP.NET Core MVC, no existe una pagina y tampoco incluye nada que coincida con una pagina directamente cuando especifica una ruta en la URL. Lo mas parecido a una pagina en una aplicacion ASP.NET Core MVC se llama vista.

    • Como sabe en la aplicacion ASP.NET MVC, todas las solicitudes entrantes del navegador son manejadas por el controlador y estas solicitudes se asignan las acciones del controlador.

    • Una accion de controlador puede devolver una vista o realizar algun otro tipo de accion, como redirigir a otra accion de controlador.

    • Con el marco MVC, la forma mas popular de crear HTML es usar el motor de vista Razor de ASP.NET MVC.

    • Para utilizar este motor de visualizacion, una accion de controleur produce un objeto ViewResult , y un ViewResult puede tener el nombre de la vista Razor que queremos usar.

     ASP.NET Core - Guia rapida

    • La vista sera un archivo en el sistema de archivos y ViewResult tambien puede llevar un objeto modelo a la vista y la vista puede usar ese objeto modelo cuando crea el HTML.

    • Cuando el marco MVC ve que la accion de su controlador produce un ViewResult, el marco encontrara la vista en el archivo del sistema, ejecutara la vista, que produce HTML, y este es el HTML que el framework envia al cliente.

    Ejemplo

    Ahora tomemos un ejemplo simple para entender como funciona en nuestra aplicacion modificando la implementacion del metodo HomeController Index como se muestra en el proximo programa.

    usando FirstAppDemo.Models; utilizando Microsoft.AspNet.Mvc; usando el sistema; utilizando System.Collections.Generico; utilizando System.Linq; usando System.Threading.Tasks; espacio de nombres FirstAppdemo.Controllers {Public Class HomeController: Controller {Public ViewResult Index () {var employee = new Employee {ID = 1, Name = "Mark Upston "}; volver Ver }}}

    En HomeController , en lugar de producir un ObjectResult , devolvamos lo que View () devuelve. El metodo View no devuelve ObjectResult. Crea un nuevo ViewResult, por lo que tambien cambiaremos el tipo de retorno del metodo Index a ViewResult. El metodo View acepta aqui algunos parametros. Invocaremos este metodo sin ningun otro parametro. Permitanos guardar su archivo y actualizar su navegador.

    Esto se debe a que el marco MVC necesita salir y encontrar esta vista, pero no hay ninguna vista en este momento.

    • Las vistas predeterminadas en un proyecto C # ASP.NET son archivos que tienen una extension * .cshtml y las vistas siguenun acuerdo especifico. De forma predeterminada, todas las vistas se encuentran en una carpeta Vistas del proyecto.

    • La ubicacion de la vista y el nombre del archivo de la vista seran derivados por ASP.NET MVC si no le da informacion adicional.

    • Si necesitamos renderizar una vista desde la accion Index del HomeController, el primer lugar donde el framework MVC buscara esta vista es dentro del Carpeta de vistas.

    • Ira a una carpeta de inicio, luego buscara un archivo llamado Index.cshtml; el nombre del archivo comienza con Index porque estamos en la accion Index.

    • El framework MVC tambien buscara en una carpeta compartida y las vistas que coloques en la carpeta compartida, puedes usarlas en cualquier lugar de la aplicacion.

    Para que la salida de nuestra vista funcione correctamente, creemos este archivo Index.cshtml en la ubicacion correcta. Entonces en nuestro proyecto tenemos quePrimero agregue una carpeta que contendra todas nuestras vistas y llamela Vistas. En la carpeta Vistas, agregaremos otra carpeta para las vistas asociadas con nuestro HomeController y llamaremos a esta carpeta Inicio. Haga clic derecho en la carpeta Inicio y seleccione Agregar → Nuevo elemento .

    En el panel izquierdo, seleccione la pagina de visualizacion de MVC e ingrese index.cshtml en el campo de nombre y haga clic en el boton Agregar.

    Agreguemos el siguiente codigo al archivo index.cshtml.

    Inicio

    ¡Bienvenido!

    Este mensaje es de la vista ...

    Ahora puede ver un * .cshtml . Puede contener marcado HTML y cualquier marcado que tengamos en ese archivo se enviara directamente al cliente. Guarde este archivo y actualice su navegador.

     ASP.NET Core - Guia rapida

    Ahora el controlador de inicio a traves de un ViewResult ha presentado esta vista al clientent y todo el marcado que esta en ese archivo index.cshtml, esto es lo que se envio al cliente.

    Regresemos al HomeController y al metodo View. Este metodo de vista tiene algunas sobrecargas diferentes y pasa el modelo de empleado como parametro.

    usando FirstAppDemo.Models; utilizando Microsoft.AspNet.Mvc; usando el sistema; utilizando System.Collections.Generic; utilizando System.Linq; usando System.Threading.Tasks; espacio de nombres FirstAppdemo.Controllers {Public Class HomeController: Controller {Public ViewResult Index () {var employee = new Employee {ID = 1, Name = "Mark Upston "}; Vista posterior (empleado); }}}

    El metodo View que solo toma un objeto modelo y que usara la vista predeterminada, que es Index. Aqui solo queremos pasar la informacion de esta plantilla y usar esta plantilla en Index.cshtml como se muestra en el siguiente programa.

    Inicio

    ¡Bienvenido!

    @ Model.Name

    Cuando usamos el signo @ en un Vista de Razor , el motor de vista de Razor tratara todo lo que escriba como una expresion de C #. La vista Razor tiene miembros integrados a los que podemos acceder en expresiones de C #. Uno de los miembros mas importantes es el modelo. Cuando diga @Model, obtendra el objeto modelo que paso a la vista desde el controlador. Entonces, aqui @ Model.Name mostrara el nombre del empleado en la vista.

    Ahora hagamos una copia de seguridad de todos los archivos. Despues de eso, actualice su navegador para ver el siguiente resultado.

     ASP.NET Core - Guia rapida

    Ahora puede ver el nombre empleado como en la captura de pantalla anterior.

    ASP.NET Core - Configurar Entity Framework

    En este capitulo instalaremos y configuraremos nuestra aplicacion para guardar y leer data de una base de data de SQL Server.

    Para trabajar con un bComo data, usaremos Entity Framework, que se reescribio recientemente para trabajar con el nuevo .NET Framework. Si ha trabajado con EF en el pasado, vera muchas cosas familiares.

    • En esta aplicacion usaremos SQL Server LocalDB. Si no se siente comodo con SQL Server, puede utilizar cualquier base de data que desee, como una base de data local o una base de data remota, siempre que tiene permiso para crear una nueva base de data en la instancia.

    • LocalDB es una edicion especial de SQL Server optimizada para desarrolladores.

    • Visual Studio 2015 e incluso su edicion Community instalaran LocalDB por defecto.

    Para verificar LocalDB, vaya a la opcion de menu Ver → Explorador de objetos de SQL Server en Visual Studio.

    ASP.NET Core - Guia rapida

    Esta es una gran herramienta si necesita trabajar con SQL Server porque le permite explorar bases de data y buscar data e incluso crear data en una base de data. Cuando lo abra por primera vez, puede tardar un poco, pero deberia conectarse automaticamente a LocalDB.

    Instalar Entity Framework

    El primer paso para usar Entity Framework es instalar el paquete NuGet Entity Framework desde NuGet Package Manager o editando el project.json directamente.

    Ahora editemos el archivo project.json directamente agregando los siguientes dos paquetes.

     ASP.NET Core - Guia rapida

    El paquete EntityFramework.Commands nos ayuda a realizar tareas con Entity Framework como el creando un esquema de base de data basado en nuestras classs de entidad C # y estas tareas estan disponibles desde una herramienta de linea de comandos donde la logica esta en el paquete EntityFramework.Commands.

    Para usar esta herramienta de lineacomando, necesitamos hacer una entrada adicional en la seccion de comandos de project.json como se muestra en la siguiente captura de pantalla.

    Lo llamamos "ef " y coincidira con este paquete EntityFramework.Commands. Podemos usar este "ef" para acceder a parte de la logica disponible en EntityFramework.Commands.

    La siguiente es la implementacion del archivo project.json.

    { "version ": "1.0.0 - * ", "compilationOptions ": { "emitEntryPoint ": true}, "dependencias ": { "Microsoft .AspNet.Mvc ": "6.0.0-rc1-final ", "Microsoft.AspNet .Diagnosticos ": " 1.0.0-rc1-final ", " Microsoft.AspNet.IISPlatformHandler ": " 1.0.0-rc1-final ", " Microsoft.AspNet.Server.Kestrel " : "1.0.0-rc1-final ", "Microsoft.AspNet.StaticFiles ": "1.0 .0-rc1-final ", "EntityFramework.MicrosoftSqlServer ": "7.0.0-rc1 -final ", " EntityFramework.Commands ": " 7.0.0-rc1-final "} " ccomandos ": {" web ": " Microsoft.AspNet.Server.Kestrel "}, " frameworks ": {" dnx451 ": {}, " dnxcore50 ": {}}, "excluir ": [ "wwwroot ", "node_m odules "], "publishExclude ": [ "**. usuario ", " **. vspscc "]}

    ASP.NET Core - DBContext

    Entity Framework le permite consultar, insertar, actualizar y eliminar data en el Usando objetos Common Language Runtime (CLR) llamados entidades. Entity Framework mapea entidades y relaciones definidas en su modelo a una base de data. Para -

    • Materialice los data devueltos por la base de data como objetos de entidad.

    • Realice un seguimiento de los cambios que se han realizado en los objetos.

    • Administre la simultaneidad.

    • Propague los cambios de objetos a la base de data.

    • Vincular objetos a controles.

    La class principal que es responsable de intla eliminacion con data como objetos es DbContext. La forma recomendada de trabajar con el contexto es definir una class que se derive de DbContext y exponga las propiedades de DbSet que representan las colecciones de las entidades especificadas en el contexto.

    Logicamente, un DBContext se asigna a una base de data especifica que tiene un esquema que el DBContext comprende. Y en esta class DBContext, puede crear propiedades de tipo DbSet . El parametro de tipo generico T sera un tipo de entidad como Employee una entidad en la aplicacion FirstAppDemo.

    Ejemplo

    Tomemos un ejemplo simple, en el que vamos a crear una class DbContext. Aqui necesitamos agregar una nueva class en la carpeta Modelos y llamarlo FirstAppDempDbContext . Aunque esta class no es una plantilla en si, recopila todas nuestras plantillas para que podamos usarlas con la base de data.

     ASP.NET Core - Guia rapida

    Hereda tu class de contexto de la class DbContext qui se encuentra en el espacio de nombres Miscrosoft.Data.Entity. Ahora implemente un DbSet of Employee en esta class.

    Eac h DbSet coincidira con una tabla en la base de data. Si tiene una propiedad Employee DbSet y el nombre de esa propiedad es Empleados, Entity Framework buscara una tabla Empleados en su base de data de forma predeterminada.

    usando FirstAppDemo. Templates; utilizando Microsoft.Data.Entity; usando el sistema; utilizando System.Collections.Generic; utilizando System.Linq; usando System.Threading.Tasks; espacio de nombres OdeToFood.Models {FirstAppDemoDbContext de class publica: DbContext {DbSet publico Empleados {get; juntos; }}}

    La implementacion es muy facil porque solo tenemos un modelo con el que trabajar. Solo necesitamos una propiedad, el DbSet de Employee y podemos nombrar esta propiedad Empleados .

    Ahora insertemos esto classe directamente en los controladores, y los controladores podrian usar FirstAppDemoDbContext para consultar la base de data. Simplificaremos todo esto agregando una nueva class a la class HomeController en la que implementamos metodos para agregar un empleado y obtener un empleado como se muestra en el siguiente programa.

    usando Microsoft. AspNet.Mvc; utilizando FirstAppDemo.ViewModels; utilizando FirstAppDemo.Services; utilizando FirstAppDemo.Entities; utilizando FirstAppDemo.Models; utilizando System.Collections.Generic; utilizando System.Linq; espacio de nombres FirstAppDemo.Controllers {HomeController de class publica: Controlador {Índice ViewResult publico () {modelo var = nuevo HomePageViewModel usando (var context = new FirstAppDemoDbContext ()) {SQLEmployeeData sqlData = new SQLEmployeeData (contexto); model.Employees = sqlData.GetAll } return View (modelo); }} class publica SQLEmployeeData {private FirstAppDemoDbContext _context {get; juntos; } public SQLEmployeeData (contexto FirstAppDemoDbContext) {_context = contexto; } public void Add (Empleado emp) {_context.Add (emp); _context.SaveChanges } Public Employee Get (ID int) {return _context.Employees.FirstOrDefault (e => e.Id == ID); } public IEnumerable GetAll () {return _con text.Employees.ToList }} Public class HomePageViewModel {publico IEnumerable Empleados {get; juntos; }}}

    En la class SQLEmployeeData anterior, puede ver que hemos definido el metodo Add que agregara un nuevo objeto de empleado al contexto y luego guardara los cambios. En el metodo Get, devolvera un empleado segun su ID. Mientras que, en el metodo GetAll, devolvera la lista de todos los empleados en la base de data.

    Configuracion de los servicios de Entity Framework

    Para tener un Entity Framework DBContext utilizable, necesitamos cambiar la configuracion del'solicitud. Necesitaremos agregar una cadena de conexion para que nuestro DBContext sepa a que servidor ir y que base de data consultar.

    • Pondremos la cadena de conexion en un archivo de configuracion JSON.

    • Tambien necesitamos agregar algunos servicios adicionales durante el metodo ConfigureServices de la class Startup.

    • Entity Framework, al igual que ASP.NET y MVC, Entity Framework se basa en la inyeccion de dependencias y, para que la inyeccion funcione, El tiempo de ejecucion debe conocer los diferentes servicios que utiliza Entity Framework.

    • Existe una API de configuracion simple que agregara todos los servicios predeterminados que necesitamos.

    Vayamos al archivo AppSettings.json y agreguemos la cadena de conexion como se muestra en el siguiente programa.

    { "mensaje ": "¡Hola, mundo! cEl mensaje proviene del archivo de configuracion ... ", " database ": {" conexion ": " Data Source = (localdb) mssqllocaldb; Initial Catalog = F irstAppDemo "}}

    Ahora pasemos a la class de inicio donde necesitamos agregar algunos servicios adicionales para que Entity Framework funcione correctamente. Especificamente, hay tres cosas que debemos hacer, que son relacionado con Entity Framework:

    • Necesitamos agregar los servicios basicos de Entity Framework.

    • Tambien necesitamos agregar el servidor SQL de los servicios de Entity Framework relacionados.

    • Necesitamos informar a Entity Framework sobre nuestro DBContext.

    Todo esto se puede hacer mediante metodos que estan disponibles como metodos de extension en IServiceCollection como se muestra en el siguiente programa.

    public void ConfigureServices (servicios IServiceCollection) {servicios. AddMvc services.AddEntityFramework () .AddSqlServer () .AddDbContext (opcion => opcion.UseSqlServer (Configuracion [ "base de data: conexion "])); }

    • El primer metodo es AddEntityFramework . Esto agregara los servicios basicos de Entity Framework, los servicios predeterminados.

    • Pero dado que Entity Framework ahora esta disenado para trabajar con diferentes tipos de bases de data, incluidas bases de data no relacionales, debemos hacer una segunda llamada para informar Entity Framework para agregar sus servicios predeterminados relacionados con SQL Server.

    • Luego, tambien debemos informar a Entity Framework sobre mi DBContext para que podamos construir instancias de esta class de manera apropiada y podemos hacerlo a traves de un tercer metodo, el metodo AddDbContext .

    • Esto tomamos un parametro de tipo generico donde especificamos el tipo de claveAsse derivado de DBContext, el FirstAppDemoDbContext.

    • En el AddDbContext, necesitamos describir las opciones para nuestro DBContext.

    • Esto se puede hacer mediante una expresion lambda ; es una accion en la que recibimos un parametro de opcion y Entity Framework puede admitir diferentes bases de data. Todo lo que tenemos que hacer es decirle a Entity Framework que este DBContext en particular va a UseSqlServer.

    • Este metodo requiere un parametro que es connectionString para usar.

    La siguiente es la implementacion completa del archivo Startup.cs .

    usando Microsoft.AspNet.Mvc; utilizando FirstAppDemo.ViewModels; utilizando los servicios de Fi rstAppDemo.Services; utilizando FirstAppDemo.Entities; utilizando FirstAppDemo.Models; utilizando System.Collections.Generic; utilizando System.Linq; espacio de nombres FirstAppDemo.Controllers {class publique HomeController: Controller {Public ViewResult Index () {var employee = new Employee {Id = 1, Name = "Mark Upston1 "}; usando (var context = new FirstAppDemoDbContext ()) {SQLEmployeeData sqlData = new SQLEmployeeData (contexto); sqlData.Add (empleado); } // var empleado = nuevo empleado {ID = 1, Nombre = "Mark Upston "}; Vista posterior (empleado); }} class publica SQLEmployeeData {FirstAppDemoDbContext privado _context {get; juntos; } public SQLEmployeeData (contexto FirstAppDemoDbContext) {_context = contexto; } public void Add (Empleado emp) {_context.Add (emp); _context.SaveChanges } Public Employee Get (ID int) {return _context.Employees.FirstOrDefault (e => e.Id == ID); } public IEnumerable GetAll () {return _context.Employees.ToList }}}

    Ahora necesitamos configurar la base de data. Una forma de configurar una base de data es usar Entity Framework para crear la base de data y es un proceso de dos pasos-

    El primer paso

    Esto implica lo siguiente -

    • Agregar el codigo de migracion a nuestro proyecto.

    • El codigo de migracion es el codigo C # . Esto se puede hacer para crear una base de data en un esquema de base de data.

    • Entity Framework puede generar este codigo de migracion para nosotros.

    • Entity Framework examina la base de data y nuestros modelos y determina los cambios de esquema necesarios para que la aplicacion funcione.

    • Entonces, cuando agregamos modelos adicionales o hacemos cambios a modelos existentes, como la class Empleado, podemos seguir agregando migraciones a nuestro proyecto y mantener nuestro esquema. base de data sincronizada.

    El segundo paso

    Esto implica lo siguiente:

    • Aqui tenemos que aplicar explicitamente estas migraciones para actualizaractualizar una base de data.

    • Ambas tareas se pueden realizar usando unos simples comandos desde una ventana de consola.

    • Hemos creado project.json.

    • Es por esto que creamos project.json para agregar un comando donde "ef" corresponde a EntityFramework.Commands.

    Vamos a abrir el simbolo del sistema del desarrollador para Visual Studio para ejecutar los comandos que necesitamos para agregar las migraciones y aplicar las migraciones. La forma mas sencilla de hacer esto es ir al directorio raiz de la aplicacion.

     ASP .NET Core Quick Guide

    Si estas en la carpeta que contiene el archivo project.json, estas en la carpeta correcta. Aqui necesitamos ejecutar un comando llamado dnvm. Es el administrador de versiones de .NET el que le dira al sistema que tiempo de ejecucion queremos usar.

    Ahora usemos el siguiente comando.

    lista dnvm

    Ustedvera la siguiente salida cuando presione enter.

    Tenemos que decirle al dnvm que queremos usar los entornos de ejecucion especificos. Esto nos dara acceso al comando dotnet o al comando dnx que queremos ejecutar.

    Ejecute el siguiente comando.

    dnvm use1.0.0 -rc1-update1 -p

    Presione Entrar.

    dnvm configurara nuestra ruta y las variables de entorno para incluir un directorio bin que nos dara acceso a esta utilidad dnx. Ejecutemos el comando dnx ef .

    Esto es NET, usando dnx podemos invocar los comandos que enumeramos en nuestro archivo project.json. La ejecucion de estos comandos es generalmente muy sencilla. Cuando escribe dnx ef, aparece una pantalla de ayuda. No es necesario que recuerde todas las opciones. Puede ver los comandos disponibles en los comandos de Entity Framework y hay algunosa las tres.

    Primero, debemos agregar la migracion para ejecutar el siguiente comando.

    dnx ef migrations add v1

    Presione Enter.

    Entity Framework encontrara este contexto y examinara los modelos que estan alli. Sabra que no hay una migracion previa y por lo tanto, generara la primera migracion. Aqui, la v1 es la version 1 de la base de data. Creara una nueva carpeta en el Explorador de soluciones y generara codigo.

     ASP.NET Core - Guia rapida

    Una migracion es esencialmente codigo C # usado para generar comandos SQL para modificar el esquema en una base de data. Datos SQL.

    usando System; usando System.Collections.Generic; usando Microsoft.Data.Entity.Migrations; usando Microsoft.Data.Entity.Metadata; espacio de nombres FirstAppDemo .Migrations {public parcial class v1: Migration {anulacion protegida anulacion arriba (MigrationBuilder migrationBuilder) {migrationBuilder.CreateTable (nombre: "Empleadoe ", columnas: table => new {Id = table.Column (nullable: false) .Annotation (" SqlServer: ValueGenerationStrategy ", SqlServerValueGenerationStrategy.IdentityColumn), Name = table.Column (nullable : true)}, restricciones: table => {table.PrimaryKey ( "PK_Employee ", x => x.Id);});} anulacion protegida void Down (MigrationBuilder migrationBuilder) {migrationBuilder.DropTable ( "Empleado ");}}}

    Puede ver que esto creara una tabla llamada Empleados.

    • Esta tabla debe tener dos columnas - una ID, y una columna de Nombre.

    • Por convencion, cuando Entity Framewor k ve que tiene una propiedad llamada Id, hara esa propiedad o, mejor dicho , hara de esta columna una clave principal en la base de data.

    • Aqui usaremos SQL Server. Por defecto, Entity Framework lo convertira en una IdentityColumn, lo que significa que el servidor SQL generara los ID por nosotros.

    AplicarColoca estos ID en una base de data escribiendo el comando " actualizacion de la base de data dnx ef ".

    Puede ver que el comando aplico la migracion.

    Ahora vayamos al Explorador de objetos de SQL Server y actualice la base de data, ahora puede ver que tenemos una base de data FirstAppDemo.

     ASP.NET Core - Guia rapida

    Tambien puede ver nuestra tabla Empleados e incluso podemos mirar las columnas de esta tabla donde la columna de ID es la clave principal.

    Haga clic derecho en la tabla dbo.Employee y seleccione Mostrar data.

    Antes inicie la aplicacion, agreguemos algunos data. Cuando lanzamos la aplicacion, deberiamos ver algunos data de la base de data.

    Agreguemos algunas lineas de data aqui.

     ASP. NET Core Quick Guide

    Ahora actualice el archivo index.cshtml. Muestra todos los data como una tabla.

    @model FirstAppDemo.Controllers.HomePageViewModel Inicio

    ¡Bienvenido!

    @foreach (empleado var en Model.Employees) { @ Html.ActionLink (employee.Id.ToString (), "Detalles ", nuevo {id = employee.Id}) @ employee.Name }

    Una vez que se ejecuta la aplicacion, deberia producir el siguiente resultado.

    ASP.NET Core - Vistas de diseno de Razor

    En este capitulo vamos a entender las vistas de diseno de Razor. La mayoria de los sitios web y aplicaciones web querran crear paginas con algunos elementos comunes.

    • Por lo general, tiene un area superior en cada pagina donde muestra un logotipo y un menu de navegacion.

    • Tambien podria tener una barra lateral con enlaces e informacion adicionales y probablemente un pie de pagina en la parte inferior de la pagina con contenido.

    • Cada pagina de la aplicacion querra tener estos factores comunes. Aqui usamos la vista Diseno.en la pagina para evitar la duplicacion de factores en cada pagina que escribimos.

    Vista de diseno

    Ahora veamos que es una vista de diseno.

    • Una vista de diseno es una vista de Razor con una extension * .cshtml . Tiene la opcion de nombrar una vista de diseno como desee. En este capitulo usaremos una vista de diseno con el nombre _Layout.cshtml.

    • Este es un nombre comun para una vista de diseno. en la pagina, y no se requiere el guion bajo inicial. Esta es simplemente una convencion que siguen muchos desarrolladores para identificar una vista que no es una vista; renderiza esto como resultado de la vista de una accion del controlador.

    • Este es un tipo especial de vista, pero una vez que tenemos una vista de diseno, podemos configurar nuestras vistas de controlador como la vista de indice del pagina de inicio.

     ASP.NET Core - Guia rapida

    • Nosotrospuede configurar esta vista para que se muestre en la vista Diseno en una ubicacion especifica.

    • Este enfoque de la vista Diseno significa que el Index.cshtml no necesita saber nada sobre el logotipo o la navegacion de nivel superior.

    • La vista de indice solo debe hacer que el contenido sea especifico para el modelo que la accion del controlador le da a esa vista y la vista de diseno se encarga de todo. descanso.

    Ejemplo

    Tomemos un ejemplo simple.

    Si tiene varias vistas, vera que todas las vistas contendran una cierta cantidad de marcado duplicado. Todos tendran una etiqueta HTML de apertura, una etiqueta de encabezado y una etiqueta de cuerpo .

    Aunque no tenemos un menu de navegacion en esta aplicacion, existe una buena posibilidad de que en una aplicacion real tambien este disponible y no queremos duplicar este marcado en todos losver.

    Creemos una vista de diseno y agreguemos la vista de diseno a una nueva carpeta denominada Compartida en la carpeta Vistas . Esta es una carpeta convencional conocida por el marco MVC. Sabe que las vistas internas pueden ser utilizadas por varios controladores en la aplicacion. Haga clic derecho en la carpeta compartida y seleccione Agregar → Nuevo elemento.

    En el panel central, seleccione la pagina de Presentacion de la vista MVC. El nombre predeterminado aqui es _Layout.cshtml. Elija la vista Diseno que desea usar cuando el tiempo de ejecucion se basa en el usuario. Ahora haga clic en el boton Agregar. Esto es lo que obtendra de forma predeterminada para su nueva vista Diseno.

     ASP.NET Core - Guia rapida

    Queremos que la vista Layout se encargue de gestionar la cabeza y el cuerpo. Ahora, dado que esta vista esta en una vista Razor, podemos usar expresiones C #. Siempre podemos agregar texto literal. Tenemos muchoagregando un

    < DOCTYPE span> < name = "viewport " content = "width = device width " /> @ ViewBag.Title @ DateTime.Now @RenderBody ()

    En el codigo anterior, vera expresiones como RenderBody y ViewBag.Title . Cuando una accion del controlador MVC representa la vista de indice, y con ella se involucra una pagina de diseno; luego, la vista de indice y el HTML que produce se colocaran en la vista de indice.

    Aqui es donde existe la llamada al metodo RenderBody. Podemos esperar que todas las vistas de contenido de nuestra aplicacion aparezcan dentro del

    La otra expresion dentro de este archivo es ViewBag.Title. ViewBag es una estructura de data que se puede agregar a cualquier propiedad y cualquier dato que deseeez en ViewBag. Podemos agregar un ViewBag.Title, ViewBag.CurrentDate o cualquier propiedad que queramos en el ViewBag.

    Ahora vayamos al archivo index.cshtml.

    @model FirstAppDemo.Controllers.HomePageViewModel Inicio

    ¡Bienvenido!

    @foreach (empleado var en Model.Employees) { @ Html.ActionLink (employee.Id.ToString () , "Detalles ", nuevo {id = employee.Id}) @ employee.Name }

    Quitar marcado que ya no necesitamos en la vista de indice. Por lo tanto, podemos eliminar cosas como la etiqueta HTML y la etiqueta head. Tampoco necesitamos el elemento de cuerpo de apertura. o cerrando etiquetas como se muestra en el siguiente programa.

    @model FirstAppDemo.Controllers.HomePageViewModel @ {ViewBag.Title = "Iniciol Layout = "~ / Views / Shared / _Layout.cshtml}

    ¡Bienvenido!

    @foreach (empleado var en Model.Employees) {}
    @ Html.ActionLink (empleado .Id.ToString (), "Detalles ", nuevo {id = employee.Id}) @ employee.Name

    Todavia tenemos que hacer dos cosas:

    • Primero, debemos decirle al marco MVC que queremos usar la vista Diseno. pagina desde esta vista.

    • En segundo lugar, debemos establecer el titulo apropiado agregando informacion en el ViewBag como se muestra en el codigo anterior.

    Guardemos todos los archivos y ejecutemos la aplicacion. Una vez iniciada la aplicacion, vera la siguiente pagina de bienvenida.

    ASP.NET Core - Guia quick

    ASP.NET Core - Iniciando Razor View

    En este capitulo hemos iniciado Razor View. Razor View Engine en MVC tiene una convencion donde buscara cualquier archivo con el nombre _ViewStart.cshtml y ejecutara el codigo dentro de ese archivo. antes de ejecutar el codigo en una vista individual.

    • El codigo dentro del archivo ViewStart no se puede mostrar en la salida HTML de una pagina, pero se puede usar para eliminar codigo duplicado de bloques de codigo para dentro de las vistas individuales.

    • En nuestro ejemplo, si queremos que cada vista use la vista Diseno que creamos en el ultimo capitulo, podriamos poner el codigo para definir la vista Diseno en un ViewStart en lugar de tener el codigo en cada vista.

    Ejemplo

    Tomemos un ejemplo es sencillo ver como funciona. En nuestra aplicacion, no queremos que cada vista especifique que su vista de diseno es _Layout.cshtml . Asi que haga clic derecho en la carpeta Vistas y seleccione Agregar → Nuevo elemento .

     ASP .NET Core Quick Guide

    Hay una plantilla especifica en ASP.NET MVC para una pagina ViewStart, luego seleccione MVC View Start Page en el panel central. La parte mas importante aqui es que este archivo se llama _ViewStart.cshtml . Ahora haga clic en el boton Agregar.

    El uso principal de un archivo ViewStart es definir la vista Layout.

    Ahora pasemos a dex.cshtml y corte la linea de diseno, luego agreguela al archivo ViewStart como se muestra en el siguiente programa.

    @ {Layout = "~ / Views / Shared /_Layout.cshtml}

    • Cuando el marco MVC va a renderizar una vista, vera si hay un archivo ViewStart en algun lugar de la jerarquia de carpetas.

    • Hemos colocado _ViewStart directamente en nuestra carpeta Vistas. Esto afectara a todas las vistas de todas las carpetas que se encuentran en la carpeta Vistas, asi como a las vistas en la carpeta Inicio, asi como a la carpeta Compartida, asi como a todas las demasossiers controladores que podemos agregar en el futuro.

    • Si tomamos ViewStart y lo colocamos solo en la carpeta Inicio, este pequeno codigo solo se ejecutara cuando rendericemos una de esas vistas en la carpeta Inicio .

    • Incluso podemos tener varios archivos ViewStart, por lo que podriamos tener un ViewStart.cshtml aqui en la carpeta Vistas que define la vista Diseno para todas las vistas.

    • Pero si quisieramos cambiar este valor predeterminado para todas las vistas solo en la carpeta Inicio, podriamos tener otro ViewStart en la carpeta Inicio que establezca el diseno en otra cosa .

    Hagamos una copia de seguridad de todos los archivos y ejecutemos la aplicacion.

    ASP.NET Core - Guia quick

    Vera que su pagina de inicio se ve exactamente como antes, y todavia tenemos la vista Diseno en efecto.

    ASP.NET Core - Importacion de la vista Razor

    En este capitulo tenemos la vista Razor'importar. Ademas del archivo ViewStart, tambien hay un archivo ViewImports que el marco MVC buscara al representar una vista.

    Al igual que el archivo ViewStart, podemos eliminar ViewImports.cshtml en una carpeta, y el archivo ViewImports puede influir en todas las vistas en la jerarquia de carpetas

    ASP.NET Core - Guia rapida

    • Esta vista es nueva para esta version de MVC, en la version anterior de MVC podriamos usar una Archivo de configuracion XML para configurar ciertos aspectos del motor de vista de Razor.

    • Estos archivos XML ya no estan y estamos usando codigo en su lugar.

    • El archivo ViewImports es un lugar donde podemos escribir codigo y colocar directivas comunes para extraer los espacios de nombres que necesitan nuestras vistas.

    • Si hay espacios de nombres que usamos comunmente en nuestras vistas, es posible que aparezcan directivas de uso una vez ennuestro archivo ViewImports en lugar de tener directivas de uso en cada vista o escriba en el espacio de nombres completo de una class.

    Ejemplo

    Tomemos un ejemplo simple para ver como mover nuestras directivas using a ViewImports . En la vista de indice, tenemos una directiva using para introducir el espacio de nombres FirstAppDemo.Controllers como se muestra en el siguiente programa.

    @using FirstAppDemo.Controllers @model HomePageViewModel @ {ViewBag.Title = "Home}

    ¡Bienvenido!

    @foreach (employee var en Model.Employees) {}
    @ Html.ActionLink (employee.Id.ToString (), "Detalles ", nuevo {id = employee.Id}) @employee. Nombre

    El uso de directivas permitira que el codigo generado desde la vista de Razor se compile correctamente. use directivas , el compilador de C # no puedeNo podremos encontrar este tipo de empleado. Para ver el tipo de empleado, eliminemos la directiva using del archivo Index.cshtml .

    @model HomePageViewModel @ {ViewBag.Title = "Home}

    ¡Bienvenido!

    @foreach (empleado var en Model.Employees) {}
    @ Html.ActionLink (employee.Id.ToString (), "Detalles ", nuevo {id = employee.Id}) @ employee.Name

    Ahora ejecute la aplicacion.

    ASP.NET Core - Guia rapida

    Vera uno de los errores que indica que el tipo o espacio de nombres HomePageViewModel no se pudo encontrar. Esto puede deberse a que varias de sus vistas requieren la misma directiva using . Por lo tanto, en lugar de ponerla en cada vista, creemos una importacion de vista en la carpeta Las vistas agregaran declaraciones de uso a cada vista con solo hacer clic con el boton derecho en la carpeta Vistas y seleccionar Agregar → Nuevo elemento.

    < origen de data-srcset="https://www.hebergementwebs.com/image/55/55c5c254a6d1ac79ee6bb5f98bf8bcc2.webp/aspid-net-core-guia-rapidaaspid-net-core-guia-rapida-388.webp"type = "image/webp"media = " (min-width : 800px) ">  ASP .NET Core Quick Guide

    En el panel central, seleccione la pagina MVC View Imports.el nombre predeterminado es _ViewImports.cshtml. Al igual que ViewStart, no podemos usar este archivo para renderizar HTML, asi que hagamos clic en el boton Agregar.

    Ahora agregue la directiva using en t sound en el archivo _ViewImports.cshtml como se muestra a continuacion.

    @ usando FirstAppDemo.Controllers

    Ahora todas las vistas que aparecen en esta carpeta o cualquier subcarpeta podran usar tipos de FirstAppDemo.Controllers sin especificar esa instruccion using exacta. Ejecutemos en nueva su aplicacion y vera que la vista esta funcionando ahora.

     ASP.NET Core - Guia rapida

    ASP.NET Core - Asistentes de etiquetas de Razor

    Los asistentes de etiquetas permitir que el codigo del lado del servidor participe en la creacion y representacion de elementos HTML en Razor Files. Los asistentes de etiquetas son una nueva caracteristica similar a los asistentes de HTML, que nos ayudan a representar HTML.

    • Hay muchos asistentes de etiquetas integradosres para tareas comunes, como crear formularios, enlaces, cargar elementos, etc. Los asistentes de etiquetas se crean en C # y apuntan a elementos HTML segun el nombre del elemento, el nombre del atributo o la etiqueta principal.

    • Por ejemplo, el LabelTagHelper integrado puede apuntar al elemento HTML

    • Si esta familiarizado con HTML Helpers, Tag Helpers reducen las transiciones explicitas entre HTML y C # en las vistas de Razor.

    Para usar Tag Helpers, necesitamos instalar una biblioteca NuGet y tambien agregar una directiva addTagHelper a las vistas que usan estos tag helpers. Haga clic derecho en su proyecto en el Explorador de soluciones y seleccione Administrar paquetes NuGet ....

     ASP.NET Core - Guia rapida

    Busque Microsoft.AspNet.Mvc.TagHelpers y haga clic en el boton Instalar.

    Recibira el siguiente cuadro de dialogo Vista previa.

    Haga clic en el boton Aceptar.

    Haga clic en el boton Acepto . Una vez que Microsoft.AspNet.Mvc.TagHelpers este instalado, navegue hasta el archivo project.json.

    { "version ": "1.0.0 - * ", "compilationOptions ": { "emitEntryPoint ": true}, "dependencias ": {" Microsoft.AspNet.Mvc ": " 6.0.0-rc1-final ", " Microsoft .AspNet.Diagnostics ": " 1.0.0-rc1-final ", " Microsoft.AspNet.IISPlatformHandler ": " 1.0.0-rc1-final ", " Microsoft.AspNet.Server.Kestrel ": " 1.0.0-rc1-final ", " Microsoft.AspNet. StaticFiles ": " 1.0.0-rc1-final ", " EntityFramework.MicrosoftSqlServer ": " 7.0.0 -rc1-final ", " EntityFramework.Commands ": " 7.0.0- rc1-final ", " Microsoft.AspNet.Mvc.TagHelpers ": " 6.0.0-rc1-final "}, " comandos ": {" web ": " Microsoft.AspNet. Server.Kestrel ", " ef ": " EntityFramework.Commands "}, " frameworks ": {" dnx451 ": {}, " dnxcore50 ": {}}, " excluir ": [" www root ", " node_modules "], " publishExclude ": [" **. usuario ", " **. vspscc "]}

    En la seccion de dependencias, vera que " Microsoft.AspNet.Mvc.TagHelpers ": " 6.0.0-rc1-final " se agrega.

    • Ahora cualquiera puede crear un asistente de etiquetas, asi que si estas pensando en un asistente de etiquetas, tienes necesita, puede escribir su propio asistente de etiquetas.

    • Puede colocarlo directamente en el proyecto de su aplicacion, pero debe informar al motor de vista de Razor. asistente de etiquetas.

    • De forma predeterminada, el cliente no los renderiza simplemente, aunque estos asistentes de etiquetas parecen combinarse con el HTML.

    • Razor llamara al codigo para procesar una etiqueta auxiliar; puede eliminarse de HTML y tambien puede agregar HTML adicional.

    • hay muchas cosas maravillosas que puedes hacer con un asasistente de etiquetas, pero debe registrar sus asistentes de etiquetas con Razor, incluso los asistentes de etiquetas de Microsoft, para que Razor detecte estas etiquetas en el marcado y pueda llamar al codigo que procesa el asistente de etiquetas .

    • La directiva para hacer esto es addTagHelper, y puede ponerlo en una vista individual, o si planea usar ayudantes de etiquetas en toda la aplicacion , puede usar addTagHelper en el archivo ViewImports como se muestra a continuacion.

    @using FirstAppDemo.Controllers @addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers

    La sintaxis para registrar todos los asistentes de etiquetas que estan en un ensamblado es usar una coma asterisco (*,) y luego el nombre del ensamblado, Microsoft.AspNet.Mvc.TagHelpers . Debido a que el primer elemento aqui es un nombre de tipo, aqui es donde podriamos enumerar un culoHay una etiqueta especifica si solo desea usar una.

    Pero si solo quisiera tomar todos los ayudantes de etiquetas que estan en eso, puede usar el asterisco (*) . Hay muchos asistentes de etiquetas disponibles en la biblioteca de ayuda de etiquetas. Echemos un vistazo a la vista de indice.

    @model HomePageViewModel @ {ViewBag.Title = "Home}

    ¡Bienvenido!

    @foreach (empleado var en Model.Employees) {}
    @ Html.ActionLink (employee.Id.ToString (), "Detalles ", nuevo {id = employee.Id}) @ employee.Name

    Ya tenemos un ayudante HTML que usa ActionLink para generar una etiqueta de anclaje que apuntara a una URL que nos permita 'Acceda a los detalles del empleado.

    Primero agreguemos la accion Detalles en el controlador domestico como se muestra en el siguiente programa.

    public IActionResult Details (int id) {var context = new FirstAppDemoDbContext SQLEmployeeData sqlData = new SQLEmployeeData (context); var model = sqlData.Get (id); if (model == null) {return RedirectToAction ( "Index ");} return View (model);}

    Ahora necesitamos agregar una vista para la accion de Detalles. Creemos una nueva vista en la carpeta Vistas → Inicio y llamemosla Detalles .cshtml y agregue el siguiente codigo.

    @model FirstAppDemo.Models.Employee @ Model.Name

    @ Model.Name

    Id: @ Model.Id @ Html.ActionLink ( "Inicio ", "Índice " )

    Ahora iniciemos la aplicacion.

     ASP.NET Core - Guia rapida

    Cuando haga clic en la identificacion de un empleado, lo llevara a la vista de detalles.

    Hagamos clic en la primera identificacion de empleado.

    Ahora, para usar la etiqueta auxiliar para esto, agreguemos la siguiente linea al archivo index.cshtml y eliminemos el ayudante HTML.

    Detalles

    asp-action = "Detalles es el nombre de la accion a la que queremos llegar. Si hay un parametro que desea pasar, puede usar el asistente de etiquetas asp-route y aqui queremos incluir el ID como parametro para que podamos usar el asistente de etiquetas asp-route-Id.

    Aqui esta la implementacion completa del archivo index.cshtml.

    @model HomePageViewModel @ {ViewBag.Title = "Home}

    ¡Bienvenido!

    @foreach (empleado var en Model.Employees) {}
    Detalles @ employee.Name

    Permitanos ejecutar su aplicacion nuevamente. Despues de ejecutar la aplicacion, vera la siguiente pagina.

    ASP.NET Core - Guia rapida

    Anteriormente mostramos la ID como el texto del enlace, pero ahora mostramosel texto de Detalles. Ahora hacemos clic en los detalles y creamos la URL correcta usando ayudantes de etiquetas en lugar de ayudantes de HTML.

    Ya sea que elija utilizar ayudantes HTML o ayudantes de etiquetas , es realmente una cuestion de preferencia personal. Muchos desarrolladores encuentran que los ayudantes Las etiquetas son mas faciles de crear y mantener.

    ASP.NET Core - Formulario de edicion de Razor

    En este capitulo, continuaremos discutiendo los asistentes de etiquetas. Tambien agregaremos una nueva caracteristica en nuestra aplicacion y le dara la capacidad de editar los detalles de un empleado existente. Comenzaremos agregando un enlace en el costado de cada empleado que ira a una accion de Editar en el HomeController.

    @model HomePageViewModel @ {ViewBag.Title = "Home}

    ¡Bienvenido!

    @foreach (empleado var en Model.Employees) {}
    @ empleado.Nombre Detalles Editar

    Aun no tenemos la accion Editar, pero necesitaremos una identificacion de empleado que podamos editar. Comencemos por crear una nueva vista haciendo clic derecho en la carpeta Vistas → Inicio y seleccionando Agregar → Nuevos elementos .

     ASP.NET Core - Guia rapida

    En el panel central, seleccione la pagina de vista MVC; llame Pagina Edit.cshtml. Ahora haga clic en el boton Agregar.

    Agregue el siguiente codigo al archivo Edit.cshtml .

    @model Employee @ {ViewBag.Title = $ " Editar {Model.Name}}

    Editar @ Model.Name

    Para el titulo de esta pagina, podemos decir quedesea editar y luego proporcione el nombre del empleado.

    • El signo de dolar delante de Modificar permitira que el tiempo de ejecucion reemplace Model.Name con un valor que este en esta propiedad como el nombre del empleado.

    • Dentro de la etiqueta de formulario, podemos usar la etiqueta de ayuda como asp-action y asp-controller. para que cuando el usuario envie este formulario, vaya directamente a una accion especifica del controlador.

    • En este caso, queremos ir a la accion Editar en el mismo controlador y queremos decir explicitamente que para el metodo en este formulario debe usar un HttpPost .

    • El metodo predeterminado para un formulario es GET, y no queremos editar a un empleado mediante una operacion GET.

    • En la etiqueta de etiqueta, usamos el asistente de etiqueta asp-for que indica que esta es una etiqueta para la propiedadTee Nombre del modelo. Este asistente de etiquetas puede configurar el atributo Html.For para que tenga el valor correcto y establecer el texto interno de esta etiqueta para mostrar realmente lo que queremos, como el nombre de la etiqueta. empleado.

    Vayamos a la class HomeController y agreguemos la accion Editar que devuelve la vista que le da al usuario un formulario para editar un empleado, entonces necesitaremos una segunda accion de edicion que respondera a un HttpPost como se muestra a continuacion.

    [HttpGet] Public IActionResult Edit (int id) {var context = new FirstAppDemoDbContext SQLEmployeeData sqlData = new SQLEmployeeData (contexto); var modelo = sqlData.Get (id); if (modelo == null) {return RedirectToAction ( "Index "); } return View (modelo); }

    Primero, necesitamos una accion de edicion que responda a una solicitud GET. Necesitara una identificacion de empleado. El codigo aqui sera similar acodigo que tenemos en la accion Detalles. Primero extraeremos los data del empleado que el usuario quiere modificar. Tambien debemos asegurarnos de que el empleado realmente exista. Si no existe, redirigiremos al usuario a la vista de indice. Pero cuando existe un empleado, renderizaremos la vista Editar.

    Tambien debemos responder al HttpPost que enviara el formulario.

    Agreguemos una nueva class en HomeController .cs como se muestra en el siguiente programa.

    public class EmployeeEditViewModel {[Required, MaxLength (80)] public string Name {get; juntos; }}

    En la accion de edicion que respondera al HttpPost se tomara un EmployeeEditViewModel, pero no un empleado en si, ya que solo queremos capturar los elementos que tienen forma en el archivo de edicion. cshtml.

    La siguiente es la implementacion de la accion Editar.

    [HttpPost]public IActionResult Edit (int id, entrada EmployeeEditViewModel) {var context = new FirstAppDemoDbContext SQLEmployeeData sqlData = new SQLEmployeeData (contexto); empleado var = sqlData.Get (id); if (employee! = null && ModelState.IsValid) {employee.Name = input.Name; context.SaveChanges devuelve RedirectToAction ( "D etails ", new {id = employee.Id});} return View (employee);}

    El formulario de edicion siempre debe entregarse desde una URL que tiene un identificador en la URL de acuerdo con nuestras reglas de enrutamiento, algo asi como / home / edit / 1 .

    • El formulario siempre se enviara a esta misma URL, /home/edit/1.

    • El marco MVC puede extraer este identificador de la URL y pasarlo como parametro.

    • Siempre debemos verificar si ModelState es valido y tambien asegurarnos de que este empleado este en la base de data y que no sea nulo antes de ir '' realizar una operacionactualizar en la base de data.

    • Si nada de esto es cierto, devolveremos una vista y permitiremos que el usuario vuelva a intentarlo. Aunque en una aplicacion real con usuarios concurrentes, si el empleado es nulo, alguien podria eliminar los detalles del empleado.

    • Si este empleado no existe, digale al usuario que el empleado no existe.

    • De lo contrario, compruebe que ModelSt se ha comido. Si ModelState no es valido, devuelve una vista. Esto corrige el cambio y hace que ModelState sea valido.

    • Copie el nombre de la plantilla de la vista de entrada al empleado extraido de la base de data y guarde los cambios. El metodo SaveChagnes () volcara todas estas modificaciones en la base de data.

    La siguiente es la implementacion completa de HomeController.

    usando Microsoft.AspNet.Mvc; utilizandot FirstAppDemo.ViewModels; utilizando FirstAppDemo.Services; utilizando FirstAppDemo.Entities; utilizando FirstAppDemo.Models; utilizando System.Collections.Generic; utilizando System.Linq; utilizando System.ComponentModel.DataAnnotations; espacio de nombres FirstAppDemo.Controllers {HomeController de class publica: Controlador {Índice ViewResult publico () {modelo var = nuevo HomePageViewModel usando (var context = new FirstAppDemoDbContext ()) {SQLEmployeeData sqlData = new SQLEmployeeData (contexto); model.Employees = sqlData.GetAll } return View (modelo); } detalles publi c IActionResult (int id) {var context = new FirstAppDemoDbContext SQLEmployeeData sqlData = new SQLEmployeeData (contexto); var model = sqlData.Get (id) if (model == null) {return RedirectToAction ( "Index "); } return View (modelo); } [HttpGet] edicion publica de IActionResult (int id) {var context = new FirstAppDemoDbContext SQLEmployeeData sqlData = new SQLEmployeeData (contexto); var modelo = sqlData.Get (id); si (modelo== null) {return RedirectToAction ( "Index "); } return View (modelo); } [HttpPost] Public IActionResult Edit (int id, entrada EmployeeEditViewModel) {var context = new FirstAppDemoDbContext SQLEmployeeData sqlData = new SQLEmployeeData (contexto); empleado var = sqlData.Get (id); if (employee! = null && ModelState.IsValid) {employee.Name = input.Name; context.SaveChanges return RedirectToAction ( "Detalles ", nuevo {id = employee.Id}); } return View (empleado); }} class publica SQLEmployeeData {FirstAppDemoDbContext privado _context {get; juntos; } public SQLEmployeeData (contexto FirstAppDemoDbContext) {_context = contexto; } public void Add (Empleado emp) {_context.Add (emp); _context.SaveChanges } Public Employee Get (ID int) {return _context.Employees.FirstOrDefault (e => e.Id == ID); } public IEnumerable GetAll () {return _context.Employees.ToList }} Public class HomePageViewModel {publico IEnumerable Empleados {get; juntos; }} public class EmployeeEditViewModel {[Requerido, MaxLength (80)] cadena publica Name {get; juntos; }}}

    Compilemos el programa y ejecutemos la aplicacion.

    Ahora tenemos un enlace de edicion disponible; Editemos los detalles de Josh haciendo clic en el enlace Editar.

    Cambiemos el nombre a Josh Groban.

    Haga clic en el boton Guardar.

    Puedes ver que el nombre ha sido cambiado a Josh Groban como en la captura de pantalla anterior. Ahora hagamos clic en el enlace Inicio.

    ASP.NET Core - Guia rapida

    En la pagina de inicio, ahora vera el nombre actualizado.

    ASP.NET Core - Descripcion general de la identidad

    En este capitulo, tenemos brevemente el marco de identidad de ASP.NET Core. El marco de identidad de ASP.NET Core se utiliza para implementar la autenticacion mediante Hay muchas opciones para identificar a sus usuarios, incluida la autenticacion de Windows y todos los proveedores de identidad de terceros como Google, Microsoft, Facebook y GitHub, etc.

    • El marco de identidad es otra dependencia que agregaremos a nuestra aplicacion en el archivo project.js.

    • Este marco que permite agregar funcionalidad donde los usuarios pueden registrarse e iniciar sesion con una contrasena local.

    • El marco tambien admite la autenticacion en dos factores, proveedores de identidad de terceros y otras caracteristicas.

    • Nos centraremos en los escenarios en los que un usuario puede registrarse, iniciar sesion y cerrar sesion.

    Para hacer esto, necesitamos crear una entidad de Usuario y esta class heredara de una class base en el marco de Identidad y la class base que dar a nuestras propiedades de usuario estandar como nombre de usuario y direccion de correo electronico.

     ASP.NET Core - Guia rapida

    • Podemos incluir tantas propiedades adicionales como queramos en esta class para almacenar informacion sobre nuestrousuarios.

    • Necesitamos tomar esta class User y conectarla a una class UserStore proporcionada por Identity framework.

    • UserStore es la class con la que nuestro codigo hablara para crear usuarios y validar sus contrasenas.

    • En ultima instancia, un UserStore hablara con una base de data. El marco de identidad admite Entity Framework y todas las bases de data que pueden funcionar con Entity Framework.

    • Pero puede implementar su propia UserStore para trabajar con cualquier source de data.

    • Para trabajar correctamente con Entity Framework, nuestra class User tambien se conectara a una class IdentityDb.

    • Este es uno que usa un DBContext Entity Framework para hacer el trabajo real de la base de data.

    • Necesitaremos incluir este IdentityDb en nuestra aplicacion heredandode nuestra class DataContext existente de IdentityDb en lugar del DBContext de Entity Framework.

    • Estos son IdentityDb y UserStore que trabajan juntos para almacenar informacion del usuario y validar las contrasenas de los usuarios, contrasenas hash que se encuentran en la base de data.

    Hay dos elementos de ASP.NET Core Identity Framework que necesitamos conocer

     ASP.NET Core - Guia rapida

    SignInManager

    Es uno de los dos elementos del marco de identidad -

    • Como sugiere el nombre, SignInManager puede iniciar sesion como usuario una vez que hayamos validado la contrasena.

    • Tambien podemos use este administrador para desconectar a un usuario.

    • Con la autenticacion de formularios, la conexion y desconexion se realiza administrando una cookie.

    • Cuando le decimos al SignInManager que conecte a un usuario, el administrador emite un cookie al navegador del usuario, y el navegador enviara esta cookie en cada solicitud posterior. Esto nos ayuda a identificar a este usuario.

    Identity Middleware

    Este es el segundo elemento del marco -

    • Leer la cookie enviada por SignInManager e identificar al usuario, e Esto ocurre en el ultimo elemento del framework, el middleware de identidad.

    • Necesitaremos configurar este middleware en nuestra canalizacion de aplicaciones para procesar la cookie establecida por SignInManager. Tambien veremos otras caracteristicas de este middleware en los proximos capitulos.

    ASP.NET Core - Atributo de autorizacion

    En este capitulo, discutiremos el atributo de autorizacion. Hasta ahora, en nuestra aplicacion, hemos permitido que los usuarios anonimos hagan cualquier cosa. Pueden editar los detalles de los empleados y ver los detalles, pero no tenemos ningunotener la funcionalidad para crear un nuevo empleado. Primero agreguemos la funcionalidad de autoria, y luego restringiremos el acceso de los usuarios usando el atributo Authorize.

    Necesitamos comenzar creando una nueva pagina de Vista MVC en la carpeta Vistas → Inicio y llamarla Create.cshtml y luego agregar el siguiente codigo.

    @model Employee @ {ViewBag.Title = "Create}

    Create

    @using (Html.BeginForm ()) {@ Html.LabelFor (m => m.Name) @ Html.EditorFor (m => m.Name) @ Html.ValidationMessageFor (m => m.Name)}

    Ahora agregaremos el metodo d 'action en HomeController para POST y GET, como se muestra en el siguiente programa.

    [HttpGet] public ViewResult Create () {return View } [HttpPost] public IActionResult Create (EmployeeEditViewModel model) {if (ModelState.IsValid) {var employee = new Employee employee.Name = model.Name; var context = new FirstAppDemoDbContext SQLEmployeeData sqlData = new SQLEmployeeData (contexto); sqlData.Add (empleado); return RedirectToAction ( "Detalles ", nuevo {id = employee.Id}); } return View }

    Agreguemos un enlace a Crear vista en el archivo Index.cshtml como se muestra en el siguiente programa.

    @model HomePageViewModel @ {ViewBag.Title = "Home}

    ¡Bienvenido!

    @foreach (empleado var en Model.E empleados ) {}
    @ employee.Name Detalles Editar
    Create

    Ejecute la aplicacion; vera la siguiente pagina.

    En el pagina de inicio, vera el enlace Crear. Cuando haga clic en el enlace Crear, lo llevara a la vista Crear.

     ASP.NET Core - Guia rapida

    Ingresa un nombre en el campo Nombre y haz clic enUtilice el boton Guardar.

    Ahora vera la vista detallada del empleado recien agregado. Hagamos clic en el enlace Inicio.

     ASP.NET Core - Guia rapida

    En esta aplicacion, cada usuario puede crear, modificar un empleado y todos pueden ver la vista detallada. Queremos cambiar este comportamiento para que en el futuro, los usuarios anonimos solo puedan ver la lista de empleados en la pagina de inicio, pero cualquier otra accion requiere que el usuario se identifique e inicie sesion. Podemos hacer esto con Permitir atributo .

    Usted puede colocar el atributo Authorize en un controlador o en acciones individuales dentro del controlador.

    [Authorize] public class HomeController: Controller {//. ...}

    • Cuando colocamos el atributo Authorize en el controlador mismo, el atributo Authorize se aplica a todos acciones dentro.

    • El marco MVC nono permitira que una solicitud llegue a una accion protegida por este atributo a menos que el usuario pase una verificacion de autorizacion.

    • De forma predeterminada, si no utiliza ningun otro parametro, la unica verificacion que realizara el atributo Authorize es una verificacion para asegurarse de que el usuario esta conectado para que sepamos su identidad.

    • Pero puede utilizar parametros para especificar cualquier politica de permisos personalizada que desee.

    • Tambien hay un atributo AllowAnonymous . Este atributo es util cuando desea utilizar el atributo Permitir en un controlador para proteger todas las acciones internas, pero existe una accion unica o una o dos acciones que desea desproteger y permitir que los usuarios anonimos 'lograr esta accion especifica.

    [AllowAnonymous] public ViewResult Index () {var model = new HomePageViewModel usando (var context = new FirstAppDemoDbContext ()) {SQLEmployeeData sqlData = new SQLEmployeeData (contexto); model.Employees = sqlData.GetAll } return View (modelo); }

    Probemos estos atributos en nuestra aplicacion. En la aplicacion en ejecucion, un usuario anonimo puede editar a un empleado.

    Queremos cambiar eso y obligar a los usuarios a iniciar sesion e iniciar sesion antes de que podamos editar un empleado. Ahora pasemos al HomeController. Aqui limitaremos el acceso a una o dos acciones. Siempre podemos establecer el atributo Authorize en las acciones especificas que queremos proteger. Tambien podemos establecer el atributo Authorize en el controlador en si mismo, y este atributo Authorize esta en el espacio de nombres Microsoft.AspNet.Authorization.

    Ahora usaremos el atributo Authorize y obligaremos a los usuarios a iniciar sesion para ingresar este controlador a excepcion dela pagina de inicio como se muestra en el siguiente programa.

    [Authorize] public class HomeController: Controller {[AllowAnonymous] public ViewResult Index () {var model = new HomeP ageViewModel usando (var context = new FirstAppDemoDbContext ()) {SQLEmployeeData sqlData = new SQLEmployeeData (contexto); model.Employees = sqlData.GetAll } return View (modelo); } Detalles publicos IActionResult (int id) {var context = new FirstAppDemoDbContext SQLEmployeeData sqlData = new SQLEmployeeData (contexto); var modelo = sqlData.Get (id); if (modelo == null) {return RedirectToAction ( "Index "); } return View (modelo); } [HttpGet] edicion publica de IActionResult (int id) {var context = new FirstAppDemoDbContext SQLEmployeeData sqlData = new SQLEmployeeData (contexto); var modelo = sqlData.Get (id); if (modelo == null) {return RedirectToAction ( "Index "); } return View (modelo); } [HttpPost] public IActionResult Edit (int id, entrada de EmployeeEditViewModel) {var context = new FirstAppDemoDbContext SQLEmployeeData sqlData = new SQLEmployeeData (contexto); empleado var = sqlData.Get (id); if (employee! = null && ModelState.IsValid) {employee.Name = input.Name; context.SaveChanges return RedirectToAction ( "Detalles ", nuevo {id = employee.Id}); } return View (empleado); } [HttpGet] Public ViewResult Create () {return View } [HttpPost] crear IActionResult publico (modelo EmployeeEditViewModel) {if (ModelState.IsValid) {var employee = new Employee empleado.Nombre = modelo.Nombre; var context = new FirstAppDemoDbContext SQLEmployeeData sqlData = new SQLEmployeeData (contexto); sqlData.Add (empleado); return RedirectToAction ( "Detalles ", nuevo {id = employee.Id}); } return View }}

    La pagina de inicio o el archivo Index.cshtml que muestra la lista de empleados tiene el atributo AllowAnonymous . Ahora iniciemos su aplicacion.

     ASP.NET Core - Guia rapida

    Presione la tecla F12 que abrira las herramientasdesarrollo . Ahora vaya a la pestana Red .

    Hay algunas cosas que queremos ver en las herramientas de desarrollo, para que podamos ver como funcionan las cosas . Cuando haga clic en el enlace Editar, vera una pagina en blanco.

     ASP.NET Core - Guia rapida

    Si mire las herramientas para desarrolladores, vera que el codigo de estado HTTP devuelto por el servidor era un codigo de estado 401 .

     ASP.NET Core - Guia rapida

    El codigo de estado 401 le dice al navegador que la solicitud no fue permitida porque no tenia credenciales validas. Esto nos dice que el atributo Authorize esta funcionando .

    De manera similar, cuando haga clic en el enlace Crear en la pagina de inicio, vera el mismo error que se muestra en la siguiente captura de pantalla.

     ASP.NET Core - Guia rapida

    • Aqui el problema es que el El usuario se queda en una pagina en blanco y, a menos que tenga abiertas las herramientas de desarrollo, es posible que no sepan que fueun problema de autenticacion.

    • Aqui es donde el marco de identidad puede intervenir y ayudar.

    • El marco de identidad puede detectar cuando un elemento de la aplicacion quiere devolver el codigo de estado 401 porque el usuario no esta autorizado para acceder a el, y el El marco de identidad puede convertir esto en una pagina de inicio de sesion y permitir que el usuario supere este problema.

    • Veremos como funciona eso una vez que hayamos instalado y configurado el marco de identidad.

    • Pero por ahora, podemos ver que el atributo Autorizar esta funcionando.

    ASP.NET Core - Configuracion de identidad

    En este capitulo instalaremos y configuraremos el marco de identidad, este que solo requiere un poco de trabajo. Si va a Visual Studio y crea una nueva aplicacion ASP.NET Core, y elige la plantilla de aplicacion web completa con autenticaciondefinido en cuentas de usuario individuales, este nuevo proyecto incluira todos los elementos del marco de identidad configurado para usted.

    Empezamos con un proyecto vacio, ahora vamos a configurar el marco de identidad desde cero, que es una buena forma de conocer todas las partes del modelo de aplicacion completa, ya que puede resultar confuso si no ha revisado todos los codigos en detalle.

    Para comenzar, necesitaremos instalar la dependencia, que es Microsoft.AspNet.Identity . Haremos esto instalando Microsoft.AspNet.Identity.EntityFramework , luego implementando el marco de identidad que funciona con Entity Framework.

    • Si tomamos una dependencia en Identity.EntityFramework, el paquete incluye el paquete Identity.

    • Si crea sus propios almacenes de data, solo puede trabajar con el Paquete de identidad.

    • Una vez que nuestro ddependencias instaladas, podemos crear una class de usuario cliente con toda la informacion que queremos almacenar sobre un usuario.

    • Para esta aplicacion, vamos a heredar de una class proporcionada por el marco de identidad y esta class nos dara todos los elementos esenciales como la propiedad de nombre de usuario y un lugar para almacenar el contrasenas hash.

     ASP.NET Core - Guia rapida

    • Tambien necesitaremos modificar nuestra class FirstAppDemoDbContext para heredar f de la class IdentityDb de Identity Framework.

    • IdentityDb nos brinda todo lo que necesitamos para almacenar como informacion de usuario con Entity Framework. Una vez que hemos configurado una class de Usuario y un DBContext , necesitaremos configurar los servicios de identidad en la aplicacion con el Metodo ConfigureServices de la class Startup.

    • Al igual que cuando tuvimos que agregarservicios Para admitir el marco MVC, el marco de identidad necesita servicios agregados a la aplicacion para funcionar.

    • Estos servicios incluyen servicios como el servicio UserStore y el SignInManager .

    • Inyectaremos estos servicios en nuestro controlador para crear usuarios y emitir cookies en el momento apropiado.

    • Finalmente, durante el metodo de configuracion de inicio, necesitaremos agregar el middleware de identidad.

    • Este middleware no solo ayudara a convertir las cookies en una identidad de usuario, sino que tambien garantizara que el usuario no le haga ver una pagina. vacio con una respuesta 401.

    Ahora sigamos los pasos a continuacion.

    Paso 1 : necesitamos continuar agregando una dependencia en el marco de identidad. Agreguemos la dependencia Microsoft.AspNet.Identity.EntityFramework en el archivo project.json. Esto incluira anosotros los otros paquetes de identidad necesarios que necesitamos.

    { "version ": "1.0.0 - * ", "compilationOptions ": { "emitEntryPoint ": true}, " dependencias ": {" Microsoft.AspNet.Mvc ": " 6.0.0-rc1-final ", " Microsoft.AspNet.Diagnostics ": " 1.0.0-rc1-final ", "Microsoft.AspNet.IISPlatformHandler ": "1.0.0-rc1-final ", "Microsoft.AspNet.Server.Kestrel ": "1.0 .0-rc1-final ", "Microsoft.AspNet .StaticFiles ": " 1.0.0-rc1-final ", " EntityFramework.MicrosoftSqlServer ": " 7.0.0-rc1-final ", " EntityFramework.Commands ": " 7.0.0 -rc1-final ", " Microsoft.AspNet.Mvc.TagHelpers ": " 6.0.0-rc1-final ", " Microsoft.AspNet .Identity.EntityFramework ": " 3.0.0-rc1 -final "}, " comandos ": {" web ": " Microsoft.AspNet.Server.Kestrel ", " ef ": " EntityFramework.Commands "}, " frameworks ": {" dnx451 ": {}, " dnxcore50 ": {}}, " excluir ": [" wwwroot ", "node_modules "], " publishExclude ": [" **. usuario ", " **. vspscc "]}

    Paso 2 - Guarde este archivo. Visual Studio restaura los paquetes y ahora podemos agregar nuestra class de usuario. Agreguemos la class de usuario haciendo clic con el boton directamente en la carpeta Modelos y seleccionando Agregar → Clase.

    Llame a esta class de usuario y haga clic en el boton Agregar como en la captura de pantalla anterior En esta class puede agregar propiedades para contener toda la informacion que desee. desea almacenar en un usuario.

    Paso 3 : Derivemos la class User de una class proporcionada por Identity Framework. Esta es la class IdentityUser que esta en el espacio de nombres Identity.EntityFramework.

    usando Microsoft.AspNet.Identity.EntityFramework; usando system; usando System.Collections.Generic ; usando System.Linq; usando System.Threading.Tasks; espacio de nombres FirstAppDemo.Models {Public class User: IdentityUser {}}

    Paso 4 : ahora vayamos a IdentityUser, pase el cursor sobre este simbolo y presione F12 para ver la vista de data de Visual Studio.

    #region Assembly Microsoft.AspNet.Identity.EntityFramework, Version = 3.0.0.0, namespace Microsoft.AspNet.Identity.EntityFramework {public class IdentityUser: IdentityUser { public IdentityUser public IdentityUser (cadena de nombre de usuario); }}

    Paso 5 : puede ver que IdentityUser se deriva de IdentityUser a partir de la cadena. Puede cambiar el tipo de clave principal derivando de IdentityUser y especificando nuestro parametro de tipo generico. Tambien puede almacenar cosas con una clave principal que idealmente es un valor entero.

    Paso 6 - Ahora coloquemos el cursor en IdentityUser de la cadena y presionemos F12 nuevamente para ir a la vista de data.

     ASP.NET Core - Guia rapida

    Puedentaining ver toda la informacion relativa a un usuario por defecto. La informacion incluye lo siguiente:

    • Campos que no usaremos en esta aplicacion, pero que estan disponibles.

    • El marco de identidad puede rastrear el numero de intentos fallidos de inicio de sesion para un usuario en particular y puede bloquear esa cuenta durante un periodo de tiempo.

    • Campos para almacenar PasswordHash, PhoneNumber. Los dos campos importantes que usaremos son PasswordHash y UserName.

    • Tambien usaremos implicitamente la clave principal y la propiedad de ID de un usuario. Tambien puede utilizar esta propiedad si necesita buscar un usuario especifico.

    Paso 7 : ahora debemos asegurarnos de que el usuario este incluido en nuestro DBContext. Entonces, abramos el FirstAppDemoDBContext quelo tenemos en nuestra aplicacion, y en lugar de derivarlo directamente de DBContext, que es la class base incorporada de Entity Framework, ahora necesitamos derivarlo de IdentityDbContext.

    usando Microsoft.AspNet.Identity.EntityFramework; utilizando Microsoft.Data.Entity; espacio de nombres FirstAppDemo.Models {class publica FirstAppDemoDbContext: IdentityDbContext {publico DbSet Empleados {get; juntos; } override void OnConfiguring (DbContextOptionsBuilder optionsBuilder) {optionsBuilder.UseSqlServer ( "Data Source = (localdb) MSSQLLocalDB; Initial Catalog = FirstAppDemo; Integrated Security = True; Connect Timeout = 30; Encrypt = False; TrueServer; ApplicationFailnetWrite protegido = Falso ");}}}

    Paso8:laclassIdentityDbContexttambienestaenelespaciodenombresMicrosoft.AspNet.Identity.EntityFrameworkypodemosespecificareltipodeusuarioque'elladebeTienda.Deestamanera,cualquiercampoadicionalqueagreguemosalaclassUsuarioingresaraalabasededata.

  • El IdentityDbContext proporciona DbSets adicionales, no solo para almacenar un usuario, sino tambien informacion sobre roles y reclamos de usuario.

  • Nuestra class de usuario ya esta lista. Nuestra class FirstAppDemoDbContext esta configurada para trabajar con el marco de identidad.

  • Ahora podemos ir a Configure y ConfigureServices para configurar el marco de identidad.

  • paso 9 : ahora comencemos con ConfigureServices . Ademas de nuestros servicios MVC y nuestros servicios de Entity Framework, necesitamos agregar nuestros servicios de identidad. Esto agregara todos los servicios en los que se basa el marco de identidad para hacer su trabajo.

    public void ConfigureServices (IServiceCollection services) {services.AddMvc services.AddEntityFramework () .AddSqlServer () .AddDbContext (opcion => opcion.UseSqlServer (Configuracion [ "base de data: conexion "])); services.AddIdentity () .AddEntityFrameworkStores }

    • El metodo AddIdentity toma dos parametros de tipo generico: el tipo de entidad de usuario y el tipo de entidad de rol.

    • Los dos parametros de tipo generico son los tipos de nuestro usuario: la class de usuario que acabamos de crear y la class de rol con la que queremos trabajar. Ahora usaremos el IdentityRole incorporado. Esta class se encuentra en el espacio de nombres EntityFramework.

    • Cuando usamos Entity Framework con Identity, tambien necesitamos invocar un segundo metodo: AddEntityFrameworkStores.

    • El metodo AddEntityFrameworkStores confiadministrara servicios como UserStore, el servicio utilizado para crear usuarios y validar sus contrasenas.

    Paso 10 - Las siguientes dos lineas son todo lo que necesitamos para configurar los servicios de la aplicacion.

    services.AddIdentity () .AddEntityFrameworkStores

    Paso 11 : tambien necesitamos agregar el middleware. La ubicacion donde insertamos el middleware es importante porque si insertamos el middleware demasiado tarde en la pip eline, nunca tendra la oportunidad de procesar una solicitud.

    Y si necesitamos verificaciones de autorizacion en nuestros controladores MVC, necesitamos tener el middleware Identity insertado antes del marco MVC para asegurarnos de que las cookies y tambien los errores 401 se manejen con exito.

    public void Configure (aplicacion IApplicationBuilder) {app.UseIISPlatformHandler app.UseDeveloperExceptionPage app.UseRuntimeInfoPage app.UseFileServer app.UseIdentity app.UseMvc (ConfigureRoute); app.Run ((context) => {var msg = Configuration [ "message"]; espera context.Response.WriteAsync (msg);}); }

    Paso 12 : el lugar donde insertamos el middleware es donde agregaremos el middleware de identidad. La siguiente es la implementacion completa del archivo Startup.cs.

    usando Microsoft.AspNet.Builder; utilizando Microsoft.AspNet.Hosting; utilizando Microsoft.AspNet.Http; utilizando Microsoft.Extensions.DependencyInjection; utilizando Microsoft.Extensions.Configuration; utilizando FirstAppDemo.Services; utilizando Microsoft.AspNet.Routing; usando el sistema; utilizando FirstAppDemo.Entities; utilizando Microsoft.Data.Entity; utilizando FirstAppDemo.Models; utilizando Microsoft.AspNet.Identity.EntityFramework; espacio de nombres FirstAppDemo {public cLass Startup {Public Startup () {var builder = new ConfigurationBuilder () .AddJsonFile ( "AppSettings.json "); Configuracion = constructor.Build } Configuracion de IConfiguration publica {get; juntos; } // Este metodo es llamado por el tiempo de ejecucion. // Utilice este metodo para agregar servicios al contenedor. // Para obtener mas informacion sobre la configuracion de su aplicacion, // visite http: //go.microsoft.com/fw/? LinkID "=398940public void ConfigureServices (IServiceCollection services) {services.AddMvc services.AddEntityFramework () .AddSqlServer () .AddDbContext (option => option.UseSqlServer (Configuration [ "database: connection "])); services.AddIdentity () .AddEntityFra meworkStores } // El tiempo de ejecucion llama a este metodo. // Utilice este metodo para configurar la canalizacion de solicitudes HTTP public void Configure (aplicacion IApplicationBuilder) {app.UseIISPlatformHandler app.UseDeveloperExceptionPage app.UseRuntimeInfoPage app.UseFileServer app.UseIdentity app.UseMvc (ConfigureRoute); app.Run ((context) => {var msg = Configuration [ "message"]; espera context.Response.WriteAsync (msg);}); } private void ConfigureRoute (IRouteBuilder routeBuilder) {// Inicio / Index routeBuilder.MapRoute ( "Default ", "{controller = Home} / {action = Index} / {id?} "); } // Punto de entrada de la aplicacion. public static void Main (string args) => WebApplication.Run (args); }}

    Paso 13 : ahora avancemos construyendo la aplicacion. En el siguiente capitulo, necesitamos agregar otra migracion de Entity Framework para asegurarnos de que tenemos el esquema de identidad en nuestra base de data de SQL Server.

    ASP.NET Core - Migraciones de identidad

    En este capitulo, analizaremos la migracion de identidad. En ASP.NET Core MVC, la autenticacion y 'La identidad se configura en el archivo Startup.cs.

    public void ConfigureServices (servicios IServiceCollection) {services.AddMvc services.AddEntityFramework () .AddSqlServer () .AddDbContext opcion. UseSqlServer (Configuracion [ "base de data: conexion "])); services.AddIdentity () .AddEntityFrameworkStores }

    Siempre que realice un cambio en cualquiera de sus classs de entidad o realice un cambio en su class derivada de DBContext, es probable que deba crear una nueva migracion para aplicar a la base de data y sincronice el esquema con lo que esta en su codigo.

    Este es el caso en nuestra aplicacion, ya que ahora derivamos nuestra class FirstAppDemoDbContext de la class IdentityDbContext, y contiene sus propios DbSets, y tambien creara un esquema para almacenar todosinformacion sobre las entidades que gestiona.

    usando Microsoft.AspNet.Identity.EntityFramework; utilizando Microsoft.Data.Entity; espacio de nombres FirstAppDemo.Models {FirstAppDemoDbContext class publica: IdentityDbContext {DbSet publico Empleados {get; juntos; } override void OnConfiguring (DbContextOptionsBuilder optionsBuilder) {optionsBuilder.UseSqlServer ( "Data Source = (localdb) MSSQLLocalDB; Initial Catalog = FirstAppDemo; Integrated Security = True; Connect Timeout = 30; Encrypt = False; TrueServer; ApplicationFailnetWrite protegido = Falso ");}}}

    Ahoraabramoselsimbolodelsistemayverifiquemosqueestamosenlaubicaciondondeestaelarchivoproject.jsonparanuestroproyecto.

     Guia rapida de ASP.NET Core

    Tambien podemos obtener comandos de Entity Framework escribiendo dnx ef .

     ASP.NET Core - Guia rapida

    Nuestro archivo project.json tiene una seccion que asigna esta palabra clave "ef" a los comandos EntityFramework.Commands.

    "orders ": { "web ": "Microsoft.AspNet.Server.Kestrel ", "ef ": "EntityFramework. Comandos "}

    Podemos agregar una migracion desde aqui. Tambien necesitamos darle un nombre a la migracion. Usemos v2 para la version 2 y presione enter.

    Una vez que se complete la migracion, tendra un archivo v2 en su carpeta de migraciones.

    Ahora queremos aplicar esta migracion a nuestra base de data ejecutando el comando "dnx ef database update.

     ASP.NET Core - Guia rapida

    Entity Framework vera que es necesario aplicar una migracion y ejecutara esta migracion.

    Si ingresa al Explorador de objetos de SQL Server, vera la tabla de empleados que creamos anteriormente. Tambien vera tablas adicionales que necesitan almacenar usuarios, reclamaciones, roles y tablas de mapeo que corresponden a los usuarios con roles especificos.

     ASP.NET Core - Guia rapida

    Todas estas tablas estan vinculadas aentidades proporcionadas por el marco de identidad.

    Echemos un vistazo a la tabla de usuarios .

    Ahora puede ver que las columnas de la tabla AspNetUsers incluyen columnas para almacenar todas las propiedades que vimos en el usuario de identidad que heredamos, y sus campos como Nombre de usuario y PasswordHash. Entonces, uso algunos de los servicios de 'Identidad incorporada, ya que tambien contienen la capacidad de crear un usuario y validar la contrasena de un usuario.

    ASP.NET Core - Registro de usuario

    En En este capitulo discutiremos el registro de usuarios. Ahora tenemos una base de data en funcionamiento y es hora de comenzar a agregar algunas funcionalidades a la aplicacion. Tambien hemos configurado nuestra aplicacion y tenemos un esquema basico Ahora volvamos a la pagina de inicio de la aplicacion.

     ASP.NET Core - Guia rapida

    OuvAbra las herramientas de desarrollo presionando F12 y luego haga clic en el enlace Modificar. Anteriormente, cuando haciamos clic en el enlace Editar, el marco MVC detectaba la presencia del atributo Autorizar y devolvia un codigo de estado 401 porque el usuario no habia iniciado sesion.

    Ahora vera que recibimos un mensaje en la pantalla del archivo de configuracion.

    Ahora vayamos a las herramientas de desarrollo.

     ASP.NET Core - Guia rapida

    • Vera que el navegador ha solicitado la pagina de edicion y el marco MVC ha decidido que el usuario no puede ver este recurso.

    • Entonces, en algun lugar del marco MVC, se genero un codigo de estado 401.

    • Ahora tenemos el middleware de Identity instalado, que examina este codigo de estado 401 que se enviara al usuario y lo reemplaza con un codigo de estado 302, que es un codigo de estado. estado de redireccionamiento.

    • El marco de identidad sabe que el usuariosateur tendra que intentar iniciar sesion antes de poder acceder a este recurso.

    • El marco de identidad nos dirigio a esta URL, como podemos ver en la barra de direcciones - / Cuenta / Iniciar sesion.

    • Este es un punto final configurable con el marco de identidad, dentro del inicio cuando registra estos servicios y middleware. Hay diferentes opciones que puede configurar y una de las opciones es cambiar la URL de inicio de sesion.

    • De forma predeterminada, la URL sera / Cuenta / Iniciar sesion. Actualmente no tenemos un controlador de cuenta, por lo que al final del dia queremos crear un controlador de cuenta y permitir que un usuario inicie sesion.

    • Pero antes de que los usuarios puedan iniciar sesion, deberan registrarse en el sitio y registrar sus nombres de usuario y contrasenas.

    • Las funciones de inicio de sesion y registro pueden hacerparte de un controlador de cuenta.

    Ahora sigamos y agreguemos una nueva class en la carpeta Controllers, y llamemosla AccountController. Derivaremos esto de la class Controller base del marco MVC.

    usando Microsoft.AspNet.Mvc; usando el sistema; utilizando System.Collections.Generic; using System.ComponentMo del.DataAnnotations; utilizando System.Linq; usando System.Threading.Tasks; espacio de nombres FirstAppDemo.Controllers {public class AccountController: Controller {}}

    • Ahora vamos a tener que configurar una funcion que permita a un usuario s ' registrarse en este sitio.

    • Se parecera mucho a un formulario de edicion.

    • Cuando el usuario quiera registrarse, primero le mostraremos un formulario que le permitira completar la informacion requerida. Luego pueden descargar este formulario sen el sitio.

    • Esta informacion se guarda en la base de data.

    Ahora vamos a crear la accion que devolvera una vista cuando vayamos a /account/register.

    Public Class AccountController: Controller {[HttpGet] Public ViewResult Register () {return View }}

    No necesitamos buscar nada, el usuario proporcionara toda la informacion que necesitemos. Antes de crear el ViewModel para esta vista, debemos decidir que informacion mostrara la vista. Tambien debemos decidir que informacion necesitaremos recibir del usuario.

    Creemos un modelo de vista para este escenario agregando una nueva class en el archivo AccountController.cs y llamandolo RegisterViewModel.

    Creemos algunas propiedades que contendran el nombre de usuario, la contrasena y tambien el usuario ConfirmPassword en el tescribiendo dos veces y asegurandose de que las dos contrasenas coincidan como se muestra en el siguiente programa.

    public class RegisterViewModel {[Requerido, MaxLength (256)] cadena publica Username {get; juntos; } [Requerido, DataType (DataType.Password)] cadena publica Contrasena {get; juntos; } [DataType (DataType.Password), Compare (nombre de (Contrasena))] cadena publica ConfirmPassword {get; juntos; }}

    En la class anterior, puede ver algunas anotaciones que pueden ayudarnos a validar este modelo. Aqui se requiere el nombre de usuario y, si observa el esquema de la base de data, la columna que debe contener un nombre de usuario tiene 256 caracteres.

  • Tambien aplicaremos un atributo MaxLength aqui.

  • Se requerira una contrasena y cuando hacemos una entrada para esta contrasena, queremos que el tipo de entrada sea Escriba contrasena afen que los personajes no aparecen en la pantalla.

  • La Confirmar contrasena tambien sera la contrasena de tipo de data, luego habra un atributo de comparacion adicional. Compararemos el campo ConfirmPassword con esta otra propiedad que podemos especificar, que es el campo Password.

  • Ahora creemos la vista que necesitamos. Necesitaremos agregar una nueva carpeta a las vistas y llamarla Cuenta, por lo que todas las vistas vinculadas al AccountController se agregaran a esta carpeta.

     ASP.NET Core - Guia rapida

    Ahora haga clic derecho en la carpeta Cuenta y seleccione Agregar → Nuevo elemento.

     ASP.NET Core - Guia rapida

    En el panel central, seleccione la pagina de visualizacion MVC y asignele el nombre Registrar .cshtml, luego haga clic en el boton Agregar.

    Elimine todos los codigos existentes del archivo Register.cshtml y agregue el siguiente codigo.

    @model RegisterViewModel @ {ViewBag.Title = "Registrarse}

    Registrarse

    • Ahora puede ver que hemos especificado el modelo como el RegisterViewModel que acabamos de crear.

    • Tambien vamos a establecer el titulo de esta pagina usando ViewBag y queremos que el titulo sea Registro.

    • Tambien necesitamos crear un formulario que contenga los campos Nombre de usuario, Contrasena y Confirmar contrasena.

    • Tambien hemos incluido un

    • Podemos mostrar todos los errores en el area de resumen, o podemosdigamos ValidationSummary.ModelOnly y los unicos errores que apareceran al validar el modelo dentro del resumen seran los errores de validacion asociados con el modelo y no una propiedad especifica de ese modelo.

    • En otras palabras, si los usuarios no ingresan su nombre de usuario, pero el nombre de usuario es obligatorio, habra un error. validacion para esa propiedad especifica.

    • Pero tambien puede generar errores de modelo que no estan asociados con una propiedad especifica y que apareceran en este ValidationSummary.

    • En una etiqueta tenemos etiquetas y entradas para todos los diferentes campos que tenemos en nuestro ViewModel.

    • Necesitamos una etiqueta para el nombre de usuario, una entrada para el nombre de usuario y tambien mensajes de validacion para el nombre de usuario. 'usuario.

    • Los otros dos son profesionalesLos valores que debemos ingresar por parte del usuario son los mismos y tendran una etiqueta y una entrada y un alcance para la contrasena y una etiqueta y una entrada y un alcance para ConfirmPassword.

    • No necesitamos especificar los tipos de entrada para la contrasena y la contrasena de confirmacion, porque asp para el asistente de etiquetas se asegurara de establecer este tipo de entrada como contrasena para nosotros.

    • Al final debemos tener el boton que dice Registrarse . Cuando el usuario haga clic en este boton, reenviaremos el formulario al controlador.

    En AccountController, tambien necesitamos implementar un metodo de accion HttpPost Register. Regresemos al AccountController y agreguemos la siguiente accion de registro de la siguiente manera:

    [HttpPost] public IActionResult Register (modelo RegisterViewModel) {}

    Este metodo la accion devolvera un IActionResult. Esto recibira un RegisterViewModel. Ahora tenemos que interactuar con el marco de identidad para asegurarnos de que el usuario es valido, decirle al marco de identidad que cree este usuario y luego, como acaban de crear la cuenta, inicie sesion. Veremos la implementacion de todos estos pasos en el proximo capitulo.

    ASP.NET Core - Crear usuario

    En este capitulo discutiremos como crear un usuario. Para continuar, necesitamos interactuar con el marco de identidad para asegurarnos de que el usuario sea valido, luego crear este usuario, luego continuar e iniciar sesion.

    • Hay dos servicios basicos del marco de identidad, uno es el UserManager y el otro es el SignInManager.

    • Necesitamos inyectar estos dos servicios en nuestro controlador. Con esto podemos llamar a las API apropiadas cuando necesitemos crear un usuario.ro iniciar sesion como usuario.

    • Agreguemos variables privadas para SignInManager y UserManager, luego agreguemos un constructor en su AccountController, que tomara dos parametros de UserManager de tipo User y un SignInManager de tipo User.

    private SignInManager _signManager; UserManager privado _userManager; AccountController public (UserManager userManager, SignInManager signManager) {_userManager = userManager; _signManager = signManager; }

    • Vamos a continuar con el metodo de accion POST de AccountController y una de las primeras comprobaciones que siempre debemos hacer dentro del La accion posterior es verificar si nuestro ModelState es valido.

    • Si ModelState es valido, entonces sabemos que el usuario nos dio un nombre de usuario y contrasena y confirmo la contrasena; si no, tenemos que pedirles que foComplete la informacion correcta.

    • Aqui esta la implementacion de la accion Guardar.

    [HttpPost] Public Task Registro (modelo RegisterViewModel) {if (ModelState.IsValid) {var user = new User { Nombre de usuario = modelo.Nombre de usuario}; var resultado = esperar _userManager.CreateAsync (usuario, modelo.Password); if (result.Succeeded) {espera _signManager.SignInAsync (usuario, falso); return RedirectToAction ( "Índice ", "Inicio "); } else {foreach (var error en result.Errors) {ModelState.AddModelError ( ", error.Deion); }}} return View }

    • Si nuestro ModelState es valido, necesitamos hablar con el marco de identidad. Tambien necesitamos crear una nueva instancia de nuestra entidad Usuario y copiar nuestra entrada model.Username en la propiedad UserName de la entidad User.

    • Pero no vamos a copiar la contrasena porque no hay lugar para almacenarVerifique la contrasena en texto sin formato en la entidad Usuario. En su lugar, pasaremos la contrasena directamente al marco de identidad, que hara un hash de la contrasena.

    • Asi que tenemos un userManager. Cree un metodo Async en el que necesitemos pasar el nombre de usuario, para que podamos guardar la contrasena de ese usuario.

    • Este metodo Async devuelve un resultado que nos dice si la instancia tuvo exito o fallo y si fallo, esto nos dara algunas de las posibles razones de su falla.

    • Si el resultado es exitoso, podemos conectar al usuario que acaba de crear una cuenta y luego pedirle al SignInManager que firme a este usuario. Ahora redirija al usuario a la pagina de inicio y ahora estara autenticado.

    • Si el resultado no fue exitoso, deberiamos intentar decirle al usuario por que, y el resultado que viene de UserManager tiene unaLa coleccion de errores que podemos iterar y agregar estos errores en ModelState. Estos errores estaran disponibles en la vista para los asistentes de etiquetas, como los asistentes de etiquetas de validacion, para mostrar informacion sobre la pagina.

    • En ModelState.AddModelError, podemos proporcionar una clave para asociar un error con un campo especifico. Tambien usaremos una cadena vacia y agregaremos la deion del error que se proporciono.

    Hagamos una copia de seguridad de todos los archivos, ejecutemos la aplicacion y vayamos a / account / registry .

    Ingresemos un nombre de usuario y contrasena de 5 caracteres muy simples.

     ASP.NET Core - Guia rapida

    Ahora haga clic en el boton Guardar.

    Predeterminado , el marco de identidad intenta hacer cumplir ciertas reglas en torno a las contrasenas.

    Las contrasenas deben tener al menos 6 caracteres, un caracter debe estar en minusculas, el otro en mayusculas y debe ser un caracter no numerico.

    La rLa razon por la que estos errores aparecen aqui es porque tenemos una suma de confirmacion de Mary en la pagina que detecta los errores que regresan del resultado de userManager.CreateAsync .

    Ahora que sabemos un poco mas sobre las reglas de las contrasenas, intentemos crear una contrasena lo suficientemente compleja y haga clic en registrarse.

    Ahora vera la pagina de inicio. Esto significa que la operacion funciono . Ahora pasemos al Explorador de objetos de SQL Server.

     ASP.NET Core - Guia rapida

    Haga clic con el boton derecho en la tabla dbo.AspNetUsers y seleccione Mostrar data .

    ASP.NET Core - Guia rapida

    Ahora puede ver que el usuario se creo correctamente y tambien puede ver un nuevo registro en la tabla Usuarios. Tambien puede ver un valor de contrasena con hash asi como un nombre de usuario y este es el nombre de usuario que registramos con mark.upston .

    ASP.NET Core: inicio de sesion y diciembreonnexion

    En este capitulo, tenemos la funcionalidad de conexion y desconexion. La desconexion es bastante sencilla de implementar en comparacion con la conexion. Continuemos con la vista Diseno porque queremos crear una interfaz de usuario con enlaces. Esto permitira que un usuario que haya iniciado sesion cierre la sesion y muestre tambien el nombre de usuario.

    < DOCTYPE span> < name = "viewport " content = "width = device-width " /> @ ViewBag.Title @ DateTime.Now @RenderBody ()

    • Para un usuario anonimo, mostraremos un enlace de inicio de sesion.

    • Toda la informacion que necesita para crear esta interfaz de usuario esta disponible en el contexto de la vista Razor.

    • Primero, agreguemos el espacio de nombres System .Security.Claims en su vista de diseno.

    @usando System.Security.Claims < DOCTYPE span> < name = "viewport " content = "width = device-width " /> @ ViewBag.Title @if (User.IsSignedIn ()) {@ User.GetUserName ()} el { Iniciar sesion Registrarse } @ DateTime.Now @RenderBody ()

    • Hay una propiedad de usuario que esta disponible en cada vista de Razor y queremos crear una interfaz de usuario que mostrara el nombre del usuario que inicio sesion. Un metodo de extension IsSignedIn tambien esta disponible aqui.

    • Podemos invocar este metodo y si devuelve verdadero, aqui es donde podemos colocar el marcado, mostrar el nombre de usuario, mostrar un boton de cierre de sesion.

    • Ahora, si el usuario ha iniciado sesion, podemos mostrar el nombre de usuario del usuario utilizando el metodo auxiliar GetUserName .

    • Necesitaremos crear un boton de cierre de sesion en un formulario, que se publicara en el servidor web. Esto debe hacerse ya que creara algunas condiciones desagradables, si permite un simple GET REQUEST para permitir que un usuario salga.

    • Forzaremos que esto sea un mensaje, y cuando el usuario envie este formulario, todo lo que tenemos que hacer es presionar la accion de cierre de sesion. , que implementaremos a traves del AccountController, y para desconectar al usuario.

    • Si el usuario no ha iniciado sesion y tenemos un usuario anonimo, entonces debemos mostrar un enlace que ira al AccountController, en particular a la accion de inicio de sesion, y puede mostrar el texto Iniciar sesion.

    • Tambien necesitamos agregar un enlace para que los nuevos usuarios se registren y vayan directamente a la pagina de registro.

    Ahora vayamos a AccountController y primero implemente la accion de cierre de sesion como en el siguiente programa.

    [HttpPost] Tarea publica Logout () {await _signManager.SignOutAsync return RedirectToAction ( "Índice ", "Inicio "); }

    • Esta accion solo responde a HttpPost. Es una accion maravillosa. Tendremos que llamar a otro metodo hrone en el marco de identidad.

    • Podemos devolver una tarea desde IActionResult y la accion se llama Logout.

    • Todo lo que tenemos que hacer para cerrar la sesion es esperar el metodo SignOutAsync de SignInManager .

    • El contexto del usuario ha cambiado ahora; ahora tenemos un usuario anonimo. La vista sera redirigida a la pagina de inicio y regresaremos a la lista de empleados.

    Ahora continuemos y construyamos nuestra funcion de inicio de sesion. Aqui necesitaremos un par dections, uno que responde a una solicitud HttpGet y muestra el formulario que podemos usar para iniciar sesion, y uno que responde a una solicitud HttpPost.

    Para empezar, necesitaremos un nuevo ViewModel para extraer los data de conexion porque la conexion es muy diferente a la grabacion. Entonces, agreguemos una nueva class y llamemosla LoginViewModel .

    class publica LoginViewModel {cadena publica Nombre de usuario {get; juntos; } [DataType (DataType.Password)] cadena publica Contrasena {get; juntos; } [Display (Name = "Recordarme ")] public bool RememberMe {get; juntos; } cadena publica ReturnUrl {get; juntos; }}

    • Cuando los usuarios inician sesion, deben proporcionar informacion como nombre de usuario, contrasena.

    • La tercera pieza de informacion debe ser la interfaz de usuario de inicio de sesion. Estos van acompanados de unLa pequena casilla de verificacion que dice "Quieres recordarme". Esta es la eleccion entre si queremos una cookie de sesion o queremos una cookie mas permanente.

    • Para habilitar esta funcionalidad, agregamos una propiedad booleana RememberMe y usamos una anotacion de visualizacion. Ahora, cuando creamos una etiqueta, el texto Recordarme se muestra con un espacio.

    • La ultima informacion que realmente queremos como parte de este ViewModel es tener una propiedad que almacene ReturnUrl.

    Ahora agreguemos la accion de inicio de sesion que respondera a la solicitud Get como se muestra en el siguiente programa.

    [HttpGet] Inicio de sesion de IActionResult publico (string returnUrl = ") {var model = new LoginViewModel {ReturnUrl = returnUrl}; Vista posterior (modelo); }

    • Tomaremos returnUrl como parametro que esque se encuentra en la cadena de consulta.

    • La returnUrl puede no estar siempre ahi. Dejanos una cadena vacia como predeterminada.

    Ahora tendremos una nueva vista agregando una nueva pagina de vista MVC en la carpeta Vistas → Cuenta .

    En el panel central, seleccione la pagina de visualizacion MVC y asignele el nombre Login.cshtml, luego haga clic en el boton Agregar. Agreguemos el siguiente codigo al archivo Login.cshtml.

    @model LoginViewModel @ {ViewBag.Title = " Iniciar sesion}

    Iniciar sesion

    • En este vista de inicio de sesion, establecemos el titulo de la pagina en Iniciar sesion, luego tenemos un formulario que podravinculado a la accion AccountLogin .

    • Necesitamos usar un asistente de etiquetas, asp-route-returnurl , para asegurarnos de que ReturnUrl este en la URL donde devoluciones de formulario.

    • Necesitamos enviar esta ReturnUrl al servidor para que, si el usuario se conecta correctamente, podamos enviarla a donde estaba intentando ir. .

    • Todo lo que agregue despues de asp-route-, id o returnurl, lo que sea que tenga alli, ira en algun lugar de la solicitud, ya sea en la ruta de 'URL, o como parametro de cadena de consulta.

    • Tenemos nuestro ValidationSummary y las entradas para Nombre de usuario, Contrasena y Recuerdame, luego tenemos un boton Enviar.

    ` AccountController , e implemente la accion Publicar. Esta accion que responde a HttpPost. Sera un metodo Async porque necesitaremos llamar al marco de identidad y devolver une tarea o IActionResult.

    [HttpPost] public Task Iniciar sesion (modelo LoginViewModel) {if (ModelState.IsValid) {var result = wait _signManager.PasswordSignInAsync (model.Username, model. Contrasena, modelo.RememberMe, falso); if (result.Succeeded) {if (! string.IsNullOrEmpty (model.ReturnUrl) && Url.IsLocalUrl (model.ReturnUrl)) {return Redirect (model.ReturnUrl); } else {return RedirectToAction ( "Índice ", "Inicio "); }}} ModelState.AddModelError ( ", "Intento de conexion no valido "); Vista posterior (modelo); }

    • Llamamos a este inicio de sesion, y ahora esperamos recibir un LoginViewModel.

    • Necesitamos comprobar si ModelState es valido. Si es valido, conectese al usuario llamando a una API en SignInManager.

    • El metodo PasswordSignInAsync devolvera un resultado y si el resultado es exitoso, sabemos que el usuario ha iniciado sesion.con exito.

    • Tambien tenemos una URL de retorno. Si esta es una URL local valida, se nos redirigira a la URL de retorno.

    • Si el usuario acaba de iniciar sesion y no tiene un lugar especifico al que ir, redirigiremos al usuario a la accion Índice de HomeController.

    • Podriamos estar en una situacion en la que el usuario proporcione una contrasena o un nombre de usuario no validos. Tambien necesitamos agregar un error de plantilla que pregunte si hay un intento de inicio de sesion no valido. Ayuda al usuario a saber si algo anda mal.

    Ahora guardemos todo y ejecutemos la aplicacion.

     ASP.NET Core - Guia rapida

    Ahora tenemos enlaces de conexion e inion. Hagamos clic en el enlace de conexion.

     ASP.NET Core - Guia rapida

    Conectemos con el 'usuario que creamos en el capitulo anterior especificando el Nombre de usuario y la Contrasena y marque la casilla Recuerdame .

    Cuando hace clic en el boton Conectar, el navegador le pregunta si desea guardar su contrasena para el host local. Hagamos clic en el boton Si.

    Ahora cerramos la sesion haciendo clic en el boton Cerrar sesion.

     ASP.NET Core Quick Guide

    Como 'usuario anonimo, intentemos editar los detalles del empleado.

    Ahora puede ver que hemos sido redirigidos a la vista de inicio de sesion .

    Permitanos iniciar sesion con su nombre de usuario y contrasena y marque la casilla de verificacion Recordarme.

    Ahora , haga clic en el boton Conexion.

    ASP.NET Core - Guia quick

    Ahora puede ver que estamos dirigidos a la URL que queremos cambiar. De hecho, hemos manejado la URL de retorno de manera apropiada .

    ÁSPID. NET Core: excepciones ÁSPID. NET Core: excepciones

    ÁSPID. NET Core: excepciones

    • 2020-11-20 13:44:02 | Tutorial principa...

    ASP. NET Core: excepcionesEn este capítulo, discutiremos las excepciones y el manejo de errores. Cuando se producen errores en su aplicación ASP. NET Core, hay varias formas de manejarlos. Veamos otro middleware disponible a través del paquete de diagnóstico. Este middleware nos ayudará a solucionar...

    • facebook
    • twitter
    • xing
    • linkedin
    ÁSPID. NET Core: archivos estáticos ÁSPID. NET Core: archivos estáticos

    ÁSPID. NET Core: archivos estáticos

    • 2020-11-20 13:43:47 | Tutorial principa...

    ASP. NET Core: archivos estáticosEn este capítulo aprenderemos a trabajar con archivos. Una característica importante que casi todas las aplicaciones web necesitan es la capacidad de servir archivos (archivos estáticos) desde el sistema de archivos. Los archivos estáticos como archivos JavaScript, i...

    • facebook
    • twitter
    • xing
    • linkedin
    ÁSPID. NET Core: configurar MVC ÁSPID. NET Core: configurar MVC

    ÁSPID. NET Core: configurar MVC

    • 2020-11-20 03:26:48 | Tutorial principa...

    ASP. NET Core: configurar MVCEn este capítulo, configuraremos el marco MVC en nuestra aplicación FirstAppDemo. Haremos esto mediante la creación de una aplicación web sobre ASP. NET Core y, más específicamente, el marco ASP. NET Core MVC. Técnicamente, podemos construir una aplicación completa usand...

    • facebook
    • twitter
    • xing
    • linkedin
    ÁSPID. NET Core - Patrón de diseño MVC ÁSPID. NET Core - Patrón de diseño MVC

    ÁSPID. NET Core - Patrón de diseño MVC

    • 2020-11-20 03:26:27 | Tutorial principa...

    ASP. NET Core - Plantilla de diseño MVCEl patrón de diseño MVC (Model-View-Controller) es un patrón de diseño que ha existido durante algunas décadas y se ha utilizado en muchas tecnologías diferentes, desde Smalltalk hasta C ++, Java y ahora C # y. NET como plantilla de diseño para usar al crear un...

    • facebook
    • twitter
    • xing
    • linkedin
    ÁSPID. NET Core: enrutamiento ÁSPID. NET Core: enrutamiento

    ÁSPID. NET Core: enrutamiento

    • 2020-11-20 03:26:12 | Tutorial principa...

    ASP. NET Core: enrutamientoEn el marco MVC, tenemos tres componentes, cada uno con su propio enfoque en una parte específica del trabajo. Para que esto funcione, necesitamos encontrar una manera de enviar estas solicitudes HTTP al controlador correcto. En ASP. NET Core MVC, este proceso se denomina ...

    • facebook
    • twitter
    • xing
    • linkedin
    ÁSPID. NET Core: rutas de atributos ÁSPID. NET Core: rutas de atributos

    ÁSPID. NET Core: rutas de atributos

    • 2020-11-20 03:25:45 | Tutorial principa...

    ASP. NET Core: rutas de atributosEn este capítulo aprenderemos otro enfoque del enrutamiento y ese es el enrutamiento basado en atributos. Con el enrutamiento basado en atributos, podemos usar atributos de C # en nuestras clases de controlador y en los métodos internamente en esas clases. Estos atri...

    • facebook
    • twitter
    • xing
    • linkedin
    ÁSPID. NET Core: resultados de la acción ÁSPID. NET Core: resultados de la acción

    ÁSPID. NET Core: resultados de la acción

    • 2020-11-20 03:25:27 | Tutorial principa...

    ASP. NET Core: resultados de la acciónEn este capítulo discutiremos los resultados de las acciones. En los capítulos anteriores, usamos clases de C # simples y directas como controladores. Estas clases no se derivan de una clase base y puede usar este enfoque con MVC, pero es más común derivar un co...

    • facebook
    • twitter
    • xing
    • linkedin
    ÁSPID. NET Core - Vistas ÁSPID. NET Core - Vistas

    ÁSPID. NET Core - Vistas

    • 2020-11-20 03:25:08 | Tutorial principa...

    ASP. NET Core - VistasEn una aplicación ASP. NET Core MVC, nada como una página, y tampoco incluye nada que corresponda directamente a una página cuando especifica una ruta en la URL. Lo más parecido a una página en una aplicación ASP. NET Core MVC se llama vista. Como sabe en la aplicación ASP. NET...

    • facebook
    • twitter
    • xing
    • linkedin
    ÁSPID. NET Core: configurar Entity Framework ÁSPID. NET Core: configurar Entity Framework

    ÁSPID. NET Core: configurar Entity Framework

    • 2020-11-20 03:24:49 | Tutorial principa...

    ASP. NET Core: configuración de Entity FrameworkEn este capítulo, instalaremos y configuraremos nuestra aplicación para registrar y leer datos de una base de datos de SQL Server. Para trabajar con una base de datos, usaremos Entity Framework, que se ha reescrito recientemente para funcionar con el n...

    • facebook
    • twitter
    • xing
    • linkedin
    ÁSPID. NET Core - DBContext ÁSPID. NET Core - DBContext

    ÁSPID. NET Core - DBContext

    • 2020-11-20 03:24:34 | Tutorial principa...

    ASP. NET Core - DBContextEntity Framework le permite consultar, insertar, actualizar y eliminar datos utilizando objetos Common Language Runtime (CLR) llamados entidades. Entity Framework asigna las entidades y relaciones definidas en su modelo a una base de datos. También proporciona funcionalidad ...

    • facebook
    • twitter
    • xing
    • linkedin
    ÁSPID. NET Core - Vistas de diseño de Razor ÁSPID. NET Core - Vistas de diseño de Razor

    ÁSPID. NET Core - Vistas de diseño de Razor

    • 2020-11-20 03:23:59 | Tutorial principa...

    ASP. NET Core - Vistas de diseño de RazorEn este capítulo, entenderemos las vistas de diseño de Razor. La mayoría de los sitios web y aplicaciones web querrán crear páginas que tengan algunos elementos en común. Por lo general, tiene un área superior en cada página donde muestra un logotipo y un men...

    • facebook
    • twitter
    • xing
    • linkedin
    ÁSPID. NET Core: inicio de la vista Razor ÁSPID. NET Core: inicio de la vista Razor

    ÁSPID. NET Core: inicio de la vista Razor

    • 2020-11-20 03:23:36 | Tutorial principa...

    ASP. NET Core: inicio de vista de RazorEn este capítulo, tenemos el inicio de Razor View. Razor View Engine en MVC tiene una convención en la que buscará cualquier archivo con el nombre _ViewStart. cshtml y ejecutará el código dentro de ese archivo. antes de ejecutar el código en una vista individua...

    • facebook
    • twitter
    • xing
    • linkedin
    ÁSPID. NET Core: importación de la vista Razor ÁSPID. NET Core: importación de la vista Razor

    ÁSPID. NET Core: importación de la vista Razor

    • 2020-11-20 03:23:20 | Tutorial principa...

    ASP. NET Core: importación de la vista RazorEn este capítulo, tenemos la importación de Razor View. Además del archivo ViewStart, también hay un archivo ViewImports que el marco MVC buscará al renderizar una vista. Al igual que el archivo ViewStart, podemos eliminar ViewImports. cshtml en una carpet...

    • facebook
    • twitter
    • xing
    • linkedin
    ÁSPID. NET Core - Ayuda de la etiqueta Razor ÁSPID. NET Core - Ayuda de la etiqueta Razor

    ÁSPID. NET Core - Ayuda de la etiqueta Razor

    • 2020-11-20 03:23:01 | Tutorial principa...

    ASP. NET Core: ayudantes de etiquetas de RazorLos asistentes de etiquetas permiten que el código del lado del servidor participe en la creación y representación de elementos HTML en archivos Razor. Los asistentes de etiquetas son una nueva característica similar a los asistentes de HTML, que nos ayu...

    • facebook
    • twitter
    • xing
    • linkedin
    ÁSPID. NET Core: formulario de edición de Razor ÁSPID. NET Core: formulario de edición de Razor

    ÁSPID. NET Core: formulario de edición de Razor

    • 2020-11-20 03:22:38 | Tutorial principa...

    ASP. NET Core: formulario de edición de RazorEn este capítulo, continuaremos discutiendo los ayudantes de etiquetas. También agregaremos una nueva función a nuestra aplicación y le daremos la capacidad de editar los detalles de un empleado existente. Comenzaremos agregando un enlace al lado de cada ...

    • facebook
    • twitter
    • xing
    • linkedin