Desarrollo web básico con ASP. Núcleo neto | Trevoir Williams | Skillshare
Buscar

Velocidad de reproducción


  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x

Desarrollo web básico con ASP. Núcleo neto

teacher avatar Trevoir Williams, Jamaican Software Engineer

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción

      1:01

    • 2.

      Cómo configurar un proyecto básico

      3:35

    • 3.

      Proyecto de un recorrido de páginas de afeitar

      18:57

    • 4.

      Cómo entender la sintaxis

      12:19

    • 5.

      Mensaje desde ajustes

      7:51

    • 6.

      Cómo agregar un marco de entidades

      12:03

    • 7.

      Cómo agregar bases de datos

      14:32

    • 8.

      Clases de base de andamios

      13:05

    • 9.

      Cómo agregar un proyecto

      9:24

    • 10.

      Añade una página de afeitar

      21:40

    • 11.

      Agregar página de afeitar de actualización

      23:53

    • 12.

      Añadir detalles

      5:30

    • 13.

      Añadir la página de afeitar

      22:30

    • 14.

      Cómo usar vistas parciales y mejoras de la interfaz

      33:11

    • 15.

      Cómo agregar cambios

      1:26

    • 16.

      Cómo administrar cambios en bases de datos

      22:15

    • 17.

      Mejoras de formas - Parte 1

      24:20

    • 18.

      Mejoras de formas - Parte 2

      12:19

    • 19.

      Cómo mejorar los formularios y las validaciones de datos

      26:35

    • 20.

      Cómo mejorar los formularios y las validaciones de datos

      18:47

    • 21.

      Añade listas desplegables en casos con JQuery

      24:03

    • 22.

      Añade listas desplegables en casos con JQuery

      16:33

    • 23.

      Displays de etiquetas de datos

      6:42

    • 24.

      Cómo limpiar la interfaz de usuario

      31:15

    • 25.

      Cómo configurar repositorios

      25:57

    • 26.

      Añade un código de repositorio

      16:46

    • 27.

      Páginas de refactorización

      14:20

    • 28.

      Repositorios completos

      21:24

    • 29.

      Conclusión de la sección de repositorios

      9:46

    • 30.

      Configuración de autenticación de usuarios

      10:54

    • 31.

      Ampliar tabla de usuarios

      4:53

    • 32.

      Página de registro

      20:25

    • 33.

      Página de inicio de sesión

      9:45

    • 34.

      Autorización de instalación

      9:34

    • 35.

      Añade autorización

      3:09

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

86

Estudiantes

--

Proyecto

Acerca de esta clase

En este curso aprenderás a desarrollar una aplicación con ASP.NET Core 5.

Este curso se construirá sobre tus bases de programación HTML, CSS, JavaScript y C#.

Al final de este curso sabrás cómo hacerlo:

  • Cómo crear una aplicación web con ASP.NET Core
  • Asegure una aplicación web con inicio de sesión y registro
  • Aprende conceptos avanzados como inyección de dependencia y principios SOLID
  • Cómo conectar tu aplicación web a una base de datos SQL Server
  • Usa Bootstrap para embellecer tu sitio web.
  • Usa JavaScript y jQuery de forma efectiva.
  • Aprende a usar GitHub para administrar un control de fuentes

Ven conmigo en este viaje y aprende a crear una aplicación web dinámica, basada en datos y SOLID.

Conoce a tu profesor(a)

Teacher Profile Image

Trevoir Williams

Jamaican Software Engineer

Profesor(a)

Habilidades relacionadas

Desarrollo Desarrollo web
Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Introducción: Hola y bienvenidos a este curso, desarrollo web básico con ASP.Net Core F5. Soy tu instructor para VOR Williams y soy ingeniero de software y conferenciante en este curso, vamos a estar aprendiendo sobre ASP.Net Core, que es un framework web libre y de código abierto. Y también es el sucesor de ASP.Net, que es desarrollado por Microsoft. En este curso, también vamos a estar buscando conectar nuestra aplicación ASP.Net Core a una base de datos de Microsoft SQL Server. Para ello, vamos a estar mirando Entity Framework, que es una biblioteca que está especialmente diseñada para este tipo de interacción. También vamos a estar mirando el control de fuentes, que es una práctica de camiones y manejo de cambios cumplir con la escuela fuente estará utilizando GitHub como la herramienta para facilitar esta práctica. Este curso asume que tienes conocimientos fundamentales en HTML, CSS y C-sharp. Si no, entonces te animo a que consultes mis otros cursos sobre esos temas. Con todo eso dicho y hecho, empecemos y no puedo esperar a verte en el curso. 2. Configura un proyecto básico de ASP.NET: Bienvenidos de vuelta chicos. En esta lección, solo vamos a estar sentando nuestro entorno de desarrollo para nuestra aplicación ASP.Net Core. Y lo que me gustaría que hicieras es simplemente golpear Start y escribir en Visual Studio Installer. Ya tienes instalado Visual Studio. Lo que tenemos que hacer es instalar algunas más cargas de trabajo para que podamos llegar a azotar el desarrollo. No lo hagas, una vez que subas a ese instalador, deberías ver una ventana mirando algo parecido a esto. Y lo que puedes hacer es hacer clic en Modificar. Y al pulsar Modificar, vas a ver una lista de cargas de trabajo potenciales que puedes instalar. Por lo que ya tienes el para el desarrollo de escritorios. Lo que necesitarías es el para ASP.Net y desarrollo web. Entonces si ya no lo tienes marcado, entonces él puede seguir adelante y tomarlo y luego seguir adelante e instalar. Por lo que se puede ver que ya tengo la mía partió para hacer eso y se pueden instalar otras cargas de trabajo. Pero para este curso en particular o las próximas lecciones, definitivamente queríamos tener ASP.Net y desarrollo web ticked e instalado. Ahora una vez que haya completado esa instalación, puede seguir adelante y lanzar su Visual Studio. Y a partir de ahí vamos a crear un nuevo proyecto. Para que puedas seguir adelante y crear nuevo proyecto. Y estamos buscando una aplicación web ASP.Net Core. solo puedas escribir en la búsqueda ASP.Net Core Web App. Por lo que verás bastantes de ellos. Y notarías que tienes la aplicación web que utiliza páginas de Razor. También tienes la aplicación web core que utiliza el controlador de vista modal. Y luego tienes API web y tienes un montón de otras plantillas. A medida que obtienes más experiencia, puedes experimentar con las diferentes plantillas. Pero para esto, por supuesto, vamos a estar mirando aplicación web ASP.Net Core usando páginas de Razor. Podemos seguir adelante y golpear eso. Adelante y pega Siguiente. Y vamos a estar llamando este proyecto auto arrancando. La idea general detrás los proyectos será que estemos construyendo una app que permita a la gente reservar o rentar un auto de una empresa según sea necesario. Lo siento, es agradable y simple habilidad será lo suficientemente complicada maravillosamente como para que pongamos los fundamentos debajo de nuestros cinturones. Por lo que sólo podemos seguir adelante y golpear Siguiente. Y vamos a estar usando dotnet F5. Y luego podrás habilitar la compilación de tiempo de ejecución de la maquinilla de afeitar, que nos ayudará con nuestra depuración y pruebas. No vamos a sentarnos a la autenticación ahora mismo. Lo vamos a hacer manualmente más adelante para que podamos ver todos los componentes que encajan con esos ajustes en su lugar. Puedes seguir adelante y golpear Crear. Ahora que tenemos nuestro proyecto en marcha, lo que vamos a hacer es simplemente echar un vistazo rápido a lo que sacamos de la caja. Obtenemos esta estructura del proyecto. Y cuando golpees Start, notarás que obtenemos aplicación web ya hecha. Tenemos la app web, tenemos nuestra barra de navegación en la parte superior, el área de contenido. Entonces es muy similar a lo que habríamos visto cuando estamos mirando los fundamentos del desarrollo HTML, HTML. En este punto, no hemos escrito ningún código, pero aún así tenemos una página web arriba con al menos dos páginas para nuestro placer visual. Vamos a estar perforando hacia abajo en básico de lo que sacamos de la caja. Si bien todo esto se genera donde encontramos lo que se pega y hace cuando lleguemos, estaremos explorando la estructura de carpetas que obtuvimos con esta aplicación web y lo que todo de estos archivos significan y representan. 3. El proyecto de la visita de Razor: Muy bien, así que estamos de vuelta. Vamos a estar discutiendo la dinámica o al menos una estructura de carpetas y los diferentes archivos que obtenemos en nuestra aplicación ASP.Net Core. Ya has pasado y mirado HTML y CSS, y JavaScript y cómo se combinan todos esos factores para darte un sitio web y la red de fondos. Pones un nuevo proyecto en una carpeta 12, tendes a poner los diferentes tipos de activos, las imágenes en su propia carpeta, archivos CSS en su propia carpeta, etcétera Bueno, esto solo se basa en esos principios. También habrías visto que durante los ejercicios de codificación de C Sharp donde cada vez que estabas creando un proyecto, tienes una carpeta completamente nueva donde habrían estado todos esos archivos para el proyecto. Es el mismo principio o solución está en una carpeta por sí misma, el proyecto es suficiente todo por sí mismo. Y luego hay diferentes archivos y carpetas en lugar de esa otra carpeta. Empecemos con mirar propiedades. Propiedades nos da este archivo dependencias uno tiene que ver con bibliotecas y frameworks. Verás más de eso a medida que avanzamos. No voy a aburrirme, ya sabes, o abrumador con eso. Pero si miras propiedades, verás que tienes un archivo JSON que tiene alguna configuración de lanzamiento, por lo que generalmente no tienes que modificar este archivo en esto, estás haciendo algo muy explícito, que no estamos haciendo en este momento y probablemente no lo hagamos dentro del ámbito de este rumbo. Pero es bueno apreciar lo que hay aquí. Verás que tienes la aplicación URL Canadá definida aquí, donde dice que tienes la URL en una dirección HTTP y luego tienes el puerto SSL, lo que significa que cuando pulsamos Start, estamos va a poder acceder a la aplicación ya sea escribiendo en esta URL o HTTPS barra de dos puntos slash host local con el número de puerto de los puertos SSL, generalmente no tiene que cambiar nunca esto. Entonces es bueno entenderlo una vez más. Siguiente carpeta mayor es nuestra carpeta raíz www. Por lo que realmente no se ve como una carpeta basada en la retención. Las otras carpetas realmente miraban en esta estructura de proyecto, pero lo que te darías cuenta es que tiene subcarpetas en ella. Entonces esta es una carpeta que almacena los archivos estáticos para el sitio web. Entonces cuando decimos archivos estáticos, como se puede ver, es él la carpeta CSS, la carpeta JS, y otra llamada salto. Todos esos activos y los archivos CSS, archivos JavaScript, o bibliotecas de terceros que podrían ser una combinación de archivos CSS y JavaScript o jQuery. Te gustaría almacenar todos ellos dentro de la raíz www porque la propia aplicación tipo de mapea esta ubicación y hace que sea muy fácil acceder a esa ubicación cuando quieras acceder al CSS, el JavaScript, o cualquiera de los demás archivos activos. Para que puedas ver viene incorporado ya hecho con bootstrap, jQuery, validación jQuery, y otra biblioteca para la validación de jQuery. Entonces todas esas bibliotecas tipo de salen de la caja. Si queremos sumar otras bibliotecas, que vamos a hacer más adelante, siempre podemos hacer clic derecho y podemos ir a Agregar. Y luego hay una característica para simplemente instalar la biblioteca del lado del cliente. Cuando llegamos a ese punto, en realidad podemos simplemente usar esto y buscar nuestra biblioteca. Y nos mostraría todos los resultados, cómo podemos simplemente instalarlo en la aplicación sin consultar manualmente y pescar. Así que recuerda cuando estábamos haciendo nuestra inclusión jQuery y así sucesivamente wet para realmente ir al sitio web, obtener el archivo y copiar localmente, o usar un CDN. Mientras se utiliza este gestor de biblioteca. Podemos hacer todo eso aquí en tan solo unos clics. Y en realidad solo lo descargaría a nuestro sistema o a nuestras carpetas de proyectos para nosotros. Muy bien, entonces ahí es donde realmente se mantienen todos nuestros archivos estáticos. Sepa si alguna vez has visto una aplicación MVC, estarás acostumbrado a ver las carpetas modelo, ver y controlador fuera de la caja. Si no, eso está bien. Pero la diferencia entre la plantilla MVC o controlador de vista de modelo y la plantilla de páginas Razor es una grasa que la forma en que se estructuran las páginas y sus activos es diferente. Con el MVC, tienes el modelo que es un archivo de clase por demasiado. Tiene la vista, que es el archivo HTML. Y luego tienes un controlador que era la inteligencia. En páginas de Razor. Lo que han hecho es que dan una carpeta llamada páginas, y luego cada página viene con el CSS HTML o el archivo HTML, así como archivo de código R, que duplica tanto como la inteligencia como el modelo. Echemos un vistazo a la página de índice. La página de índice. Recuerda de HTML Basics, siempre nombra tu índice de primera página. Bueno, aquí está Microsoft a la altura de ese principio muy simple. Entonces cuando hago clic en la página de índice, el archivo CSS HTML, entonces verás que esto es realmente sólo un archivo HTML. Sí, tiene algunos adornos, pero una vez que superes eso, que discutiremos más adelante, notarás que son las mismas etiquetas que habríamos aprendido de HTML Basics. La etiqueta div, la etiqueta de imagen, la etiqueta P, y cualquier otro objetivo que usted sabría, todos son utilizables dentro de este archivo, el punto CSS, el archivo CSS de punto HTML. Parece el código C-Sharp que acabamos de ver. Muy bien, entonces tenemos la clase pública llamada índice modelo colon. A esto se le llama herencia. El modelo de índice está heredando del modelo de página, que es una clase base que viene incorporada. Pero el hecho del asunto es que a esto se le llama modelo de índice. Y si echas un vistazo hacia atrás a la clase de índice, notarías que en la parte superior dice uno, soy una página, y luego dos, le dice al modelo. Se nota una declaración de que mi modelo es modelo de índice. Eso significa cualquier cosa que yo cualquier cosa que se defina en lugar de modelo de índice se puede acceder desde la página web a medida que construimos sobre ella. Eso lo apreciarás un poco más. La mayoría, la mayoría de las veces cuando ves las IRA son la página más, si no todas las veces, entonces las vas a ver en parejas. Vas a ver que es dot CSS HTML. Yo soy el que es dot CSS HTML. En función de tu Visual Studio, es posible que los tengas en realidad algo anidados por defecto, pero en realidad puedes cambiar ese anidamiento. Sé que está deshabilitado para mí, puedo habilitarlo. Tiendo a pensar que esto es un poco más ordenado porque cuando está anidado, solo puedo hacer clic y luego veo el archivo resultante directamente debajo de ese. A veces se vuelve confuso cuando todos ellos están listados así, pero eso depende de ti. Sólo te estoy mostrando que puedes enumerar, puedes anidar y deshabilitar eso a voluntad. Entonces como dije, cada vez que creas una página, o al menos una página de resultados estándar, vas a terminar con ambos archivos conociendo la carpeta compartida. Aquí es donde los archivos que van a ser utilizados o accedidos por todos los demás archivos, todas las demás páginas, Ahí es donde se almacenan estos. Echemos un vistazo al diseño. No, habrías notado que con nuestra página de índice, déjame simplemente saltar buffer con índice rápidamente. Habrías notado que la página de índice no tiene esa estructura de esqueleto HTML que habíamos discutido desde lo básico. Recuerda que siempre empezamos con cinta adhesiva y luego las etiquetas HTML y luego golpeamos y cuerpo y luego ponemos el contenido, esto va directamente al contenido. Lo que sucede es que están utilizando lo que llamamos un layout. O de vuelta en el día lo llamamos plantilla o una obra maestra, donde trazan la temporal una vez en lugar de repetir, repetir, repetir esta plantilla cada PDF, 20 páginas, hay que repetir esta plantilla? Sí, en un sitio web básico, es absolutamente necesario. Pero lo que hicieron fue una especie de resúmenes que trabajo ocupado. Recuerda una vez más, los frameworks están configurados para reducir la cantidad de repetición o reducir la probabilidad de que tengas que repetir ciertas cosas. Porque saben que tienes que ver con esta plantilla HTML cada vez. Cuando desarrollaron un.the.net Core Framework, lo que hicieron fue crearon al mismo tiempo y luego te permitieron renderizar los diferentes pH del interior de esta área llamada render body. Lo que realmente sucede es que cada página siempre va a tener la etiqueta HTML, la etiqueta head. Esto se establece globalmente COC, siempre está vinculando a las hojas de estilo para que no tenga que hacer eso en cada página. Tienes la etiqueta corporal que va a tener la oreja de cabecera con el nervio, por lo que no tienes que crear lo suficiente en cada página. Y entonces siempre vas a tener esa clase div con container. Recuerda que miramos eso, esa clase div es igual a container. Y luego sí, vas a ver algunas etiquetas nuevas. Puedes usarlos, es posible que nunca los uses en este punto. Realmente no tienes que hacerlo. Me preocupa , pero el punto es que cualquiera que sea la razón por la que PG crea con automáticamente obtener renderizado dentro de esta área, están dentro de esta plantilla general. Para leerte aquí cambiará el local, los Layouts, lo siento, fuera de todas las páginas a nivel mundial. Esa es una forma más fácil de mantener tu sitio web porque ahora no tienes que hacerlo a través de todas las páginas como habríamos visto cuando estamos haciendo el HTML básico y CSS. Todo eso es una especie de presentado aquí. Se ven las inclusiones de scripting en la parte inferior de la página y se puede modificar todo. Entonces veamos, por ejemplo, que lo que se generó automáticamente para nosotros sería el título View Data de la página. Si volvemos a nuestra página de índice, veríamos que ver el tipo de datos es igual a homepage. Eso es lo que se renderizaría en lugar de su título de datos. Entonces eso es como una variable y un marcador para lo que esté poniendo en cualquier pH que tengamos. Una vez más, el título es lo que se muestra en el navegador en la tina. Quería cambiar esto de ser un poco de texto a solicitud de reserva de autos. Un poco más legible por humanos. Pero ese es el título en la barra de navegación, lo siento, en la tina del navegador, entonces el navbar también tiene carb mirando arriba escrito aquí mismo. Entonces lo que voy a hacer es control y F5 y esa férula para correr sin depurar. Y cuando surja esta app, lo primero que quiero que tomen nota es el hecho de que esto está diciendo homepage. Entonces eso es cargar la página de índice. En caso de que no creas que ahí está. Indice dice homepage, ¿verdad? Por lo que está cargando la página de inicio o la página de índice aplicación de reserva de autos dash. Eso son textos estáticos que ponemos en el título. Muy bien, ¿y si quisiera actualizar este bit de texto aquí? Yo tampoco quiero decir carb enganchado ahí arriba. Entonces. Puedo ir y encontrar ese poco de código que está aquí mismo. Y lo voy a cambiar a solicitud de reserva de autos. Voy a salvar algo de humor. Siempre ahorre. Desafortunadamente, no los he visto implementar ningún AutoCAD en Visual Studio. Eso hubiera sido muy guay, pero supongo que no lo hicieron, no lo han hecho por una buena razón. Pero después de hacer ese cambio, solo voy a Control, refrescar mi navegador. Y he aquí, vemos el cambio que se está haciendo y ese cambio una vez más, estos globales. Entonces si voy en privacidad para Go on home, cada una de estas páginas es solo heredando del diseño general. Por lo que sólo voy a actualizarlo también en el pie de página. Sólo puedo repasar, cambiarlo en el pie de página. En todo caso, quería hacer trampa y cizallar. Quiero decir, esto es decir 2021 si necesitaba actualizarlo a 2022 o no mostrar solo privacidad, poniendo todo lo que necesito poner, todo eso se está actualizando globalmente. Entonces después de hacer ese cambio, sólo voy a refrescar una vez más. Y ves que el cambio no se refleja. Eso es lo fácil que es realmente modificar globalmente ¿verdad? Ahora si quisieras modificar las páginas, bueno, es sólo un montón de HTML. Entonces esto es lo que he ido a hacer. Voy a ejecutar antiguo el HTML de nuestra clase básica que teníamos en nuestra página de índice. Y sólo voy a darle una bofetada a esta nueva página de índice y vamos a ver qué pasa. Entonces aquí está nuestro HTML desde lo básico. Lo que pasa una vez más es que no necesitamos todas estas etiquetas. Necesitará esto, el cuerpo HTML todo lo que realmente quiero. Ni siquiera necesito el contenedor. Recuerdo que tuvimos que repetir Kantian o tenemos que repetir la novela por todas partes. Y luego agregamos un div para el contenido. Bueno, lo que hay en el contenido es lo que realmente necesitamos, que es lo que se muestra en la página. Tampoco necesitamos un pie de página porque tenemos nuestro pie de página. Sólo voy a tomar todo este contenido. Realmente no estoy preocupado por el funcionamiento del botón aún no están. Bueno, lo que voy a hacer es simplemente reemplazar el contenido predeterminado que vino con intento con contenido REA de nuestro curso. Fui a salvar eso y luego hacer una mirada refrescante a eso. En ninguna parte viendo que sólo podemos modificar las páginas de la misma manera. Lo único es que no tenemos que repetir nuestro esqueleto cada vez que se hace por nosotros. Sólo necesitamos el contenido. Y observa que todas las clases siguen funcionando para las pantallas de los botones y para los perros y la fuente. ¿ Por qué? Porque el archivo CSS para Bootstrap ya está incluido fuera de la caja. Ya nos están dando ese archivo bootstrap. Ahora, una cosa es que hemos conseguido a las cinco. Esto podría cambiar en el futuro, Pero el nodo correcto que es la biblioteca bootstrap, puedo perforar todo el camino hacia abajo y ver la grasa física. Entonces cuando lo dije, te facilitan el acceso. Todo lo que realmente necesitas es esta slash tilde. Y entonces comenzará a darte todas las carpetas en la jerarquía de carpetas de dub, dub, dub root. Si quisiera llegar al archivo CSS que está en mi sitio CSS, o quería llegar a la carpeta CSS y lo diré hoy, luego barra, y luego comienza a enumerar todas las carpetas para mí. Quería llegar al archivo CSS. Muy bien, entonces por eso dije que todos tus archivos estáticos a los que necesitas acceder pueden ir a acceder pueden ir a carpeta dub, dub, dub root, y eso lo hará muy fácil. Pero yo estaba haciendo el punto de que podemos perforar todo el camino hasta el archivo bootstrap. Y la versión Bootstrap que sacamos de la caja es 4.3.1. En lo básico miramos usando cinco, pero luego con esta plantilla solo nos hacemos bootstrap, bosques bootstrap, perdón, lo cual no es gran cosa porque las diferencias entre los dos no son tan grandes de un trato. Y la documentación siempre está ahí en caso estés usando algo de uno que no esté disponible en el otro, como no me ves tratando de usar Bootstrap para clases que no están en Bootstrap F5, siempre se puede volver a verificar eso. Muy bien, entonces ahora que tenemos una mejor comprensión de cómo funcionan el diseño y los archivos en general. Y ahí hay otros archivos, led view importaciones y vista de inicio. Si comienzas básicamente dice que solo usa ese archivo de diseño. Entonces si tenemos varios diseños, en realidad podemos crear otro layout. Si quisieras que un tipo de usuario viera un layout y otro tipo de usuario para ver otro layout o tener diferentes diseños por página, sea cual sea, en realidad puedes dictar cuál se deben utilizar. Todas esas cosas vendrán a su debido tiempo. Por lo que sólo voy a continuar el recorrido por los archivos y carpetas. Y pasemos a la aplicación settings.js. En la aplicación settings.js, Zen es como un archivo de configuración donde básicamente estipulamos cosas como cadenas de conexión. Ya sabes, dónde buscar la base de datos en configuraciones estáticas que necesitamos tener en su lugar para asegurarnos que ciertas características se desarrollen de manera particular. Todas esas cosas se pueden definir en ese archivo de configuración de la aplicación. Tenemos el program.cs, que es muy similar a lo que habríamos visto en nuestro C-Sharp en diverso, donde cada vez que creamos un nuevo proyecto, teníamos un archivo llamado program.cs que empató método up llamado media. Es lo mismo, program.cs, Y aquí está nuestro método principal. Entonces todo lo que sucede es que cuando golpeas IS Express nuestro inicio de calor, básicamente simplemente llamando al programa, llamando al método medio. Y el método principal dice construir y ejecutar la aplicación. Entonces, ¿dónde sabe qué configuraciones poner en marcha? Utiliza el archivo de inicio y el inicio aquí representa la startup sobre el archivo CS, que es otro lugar donde viven las configuraciones. Aquí en el constructor de startup, ves que están haciendo lo que llamamos inyección. Entonces más tarde te pones en un estándar, pero están inyectando un objeto de configuración de IA que representa OER hasta el archivo JSON settings.js. Para que si cualquiera que sea la configuración estática que pongamos ahí, podamos acceder a ellos y luego vía código hasta que use esta configuración cuando esté inicializando esta característica. Entonces el archivo de inicio es básicamente donde ocurre toda la inicialización de la característica. Porque ves aquí, estamos viendo servicios dot dirección o páginas más adelante cuando estamos agregando autenticación y otras cosas al proyecto, verás que tenemos que venir aquí y hacérselo saber. De acuerdo, por favor use este módulo, por favor use este middleware, por favor utilice esta función que vamos a agregar a este archivo a medida que la aplicación crezca. El punto de inicio css realmente acaba de encargarse de dictar lo que debería estar en su lugar para el momento en que se inicie la aplicación. Entonces si estropeo algo en este expediente o ciertas cosas en este expediente, si iba a entrar a esta línea ya que no creo que esa línea parezca útil. Y luego traté de correr, entonces va a estar recibiendo este error diciendo que hay algún desajuste entre lo quiero hacer y qué características están disponibles para mí sin tratar de leer esta flecha palabra-para -palabra. Es básicamente que he visto que estás tratando ejecutar inicializar la compilación en tiempo de ejecución, pero no vi dónde me dijiste que puedo usar el conjunto de funciones para la compilación en tiempo de ejecución. Esa línea que comenté es integral a las características que hay que llamar en otra parte de la aplicación. Para que a medida que avanzas y entiendes Who.NET Core funciona, entenderás qué bibliotecas deben ir a dónde. Una vez más, esto no es algo que necesites memorizar. Solo necesitas tener una buena idea de cómo funciona esta cosa para que cuando quieras una nueva característica, puedas ir e investigar adecuadamente para averiguar qué exactamente necesitas incluir para ponerlo en marcha . Eso es realmente todo para el recorrido por la estructura de carpetas. Cuando volvamos, empezaremos a trabajar un poco más en nuestra interfaz y a explorar cómo todo está conectado. 4. Comprender la sintaxis de Razor: Bienvenidos de vuelta chicos. En esta lección, vamos a estar mirando cómo podemos experimentar con nuestras matrices de melocotones. Ignoro el modificador de PHS o suficiente barra, e incluso miro cómo probablemente podemos inyectar nuestra molestia en diferentes lugares, similar a cómo vimos que se inyecta en la startup. Así que empecemos analizando lo que queríamos. Entonces voy a crear una página muy sencilla. Sólo estoy cerrando todas las instrucciones descripto. Y luego en las páginas voy a crear una nueva carpeta. Entonces esto siempre es una buena idea porque cuando se tienen las diferentes áreas, lo que pasa es que tienes tres operaciones principales. Crear, leer, actualizar, eliminar. Por lo que la mayoría de las veces quieres crear una carpeta. Y luego dentro de esa carpeta tendrías las diferentes páginas para soportar las diferentes características. Ya que estamos haciendo reservas de autos, lo primero que necesitaríamos probablemente tener serían los autos. Muy bien, así que voy a tener una carpeta llamada autos. Y dentro de esta carpeta para los autos, tendría un fichero de índice que representaría la primera página en la que aterrizas cuando votas por mirar autos, que normalmente sería como la lista de autos. Tienes la edición, tienes el delete y tienes que leer, lo que significa que estoy mirando a unos autos particulares detalles. No estamos listos para meternos en todas esas complicaciones. Solo estoy explicando por qué tenemos esa estructura de carpetas que verás que como un tema común a lo largo este curso y en la mayoría de las aplicaciones web, independientemente de la tecnología o el stock sea usado dentro de autos, vamos a crear un archivo de índice. Así que sólo voy a seguir adelante y hacer clic derecho y golpear Añadir ir a la página de la maquinilla de afeitar. Y lo que estamos haciendo aquí es usar las herramientas de andamios. Las herramientas de andamios nos permiten tipo de generar archivos. Supongo que Microsoft ha visto que conocemos el tipo de archivos que queríamos, nuestro framework. Y estas son cosas que tendrías que repetir manualmente h veces. Entonces aquí está la herramienta de andamios. Usa esto y haremos la mayor parte del trabajo pesado, poniendo en todo el B6, asegurándote de que no olvides nada y puedes continuar desde ahí. Entonces supongo que por eso nos dieron esta bonita herramienta. Sólo vamos a crear un pH de resultado vacío para no, fui a golpear Agregar y lo voy a llamar index.html, CSS HTML, y ya está ahí para mí. Así que voy a seguir adelante y pegaré Agregar. Por lo que ahora tengo este nuevo archivo de índice. Entonces si volvemos a mirar, vemos páginas slash cars slash index que solo te estoy dando una idea de la URL porque index siempre será el primer archivo. Entonces cuando vayamos a recortar autos, automáticamente buscará el archivo de índice para cargar eso primero. Muy bien, entonces lo que queremos hacer aquí, voy a decir Ver datos. Vamos a estar escribiendo estas cosas manualmente nosotros mismos. Fuimos a decir título. Recuerde que se ve, el tipo de datos es un marcador de posición que se alimenta en el diseño. Y sólo voy a ver lista de autos. ¿ Está bien? Lo que quiero hacer es simplemente decir H1, lista de autos, algunas cosas simples. No estamos listos para complicarnos demasiado o simplemente sudar o apetitos y entender qué, y si miras esta página de índice, verás que se ve muy similar a la otra página de índice. El motivo por el que las páginas de índice no se tocan es que las subcarpetas en las que están son diferentes. Este índice está en las páginas generales, por lo que esta es toda la página de toda la aplicación. No obstante, cuando entramos en los autos de barra, los autos smash tendrán su propia primera página y archivo de índice está haciendo para ser diferente, pero verá que tienen los mismos 2s directos. Esta es una página, Aquí hay un modelo y usando el espacio de nombres allí para este modelo versus el espacio de nombres para el otro. Una vez más, obtenemos nuestro código detrás archivo para nuestro modelo de índice. Si quisiera navegar a esta nueva página, lo que necesitaría hacer es modificar mis alelos y dejar que la barra navbar tenga el nuevo enlace. Entonces sólo voy a copiar uno que existe ahí está. Simplemente copiaré el enlace de la página de inicio existente y lo cambiaré todo para verlo para que no tengamos un área. Tenemos la página ASP. ¿ Dónde se paga la ASP? Entonces las páginas ASP ya no recortan el índice. Es el índice de slash cars slash. Aviso que no necesariamente necesitamos la extensión donde no necesitamos la extensión. Entonces es aquí donde tipo de obstruyeron algunas de las cosas a las que estamos acostumbrados con ba, HTML básico. Porque si lo miras con cuidado, aquí no hay etiqueta de deriva H. No decir que no podemos usar una naturaleza si pudiéramos. Podríamos decir que h es igual a tope adentro. Si vamos a ver hf es igual a construir la URL exacta para llegar de aplicación a página es que los autos van a ser un poco difíciles porque no podemos sólo ver el nombre del archivo lo haría extensión como si no pudiéramos CSS básico y HTML. Entonces lo que nos han dado se llaman ayudantes de etiquetas, donde dirán solo 0 me basado en el camino de la estructura de carpetas. Y voy a generar ese H ref para ti. Entonces la página ASP es igual a, y sé que tengo que ir a recortar autos. Entonces la primera slash significa la raíz de la aplicación. Entonces tengo que ir a la carpeta de autos. No tuve que ir al archivo de índice. Ahí es donde debe conducir este enlace. Generará el riff H en tiempo de ejecución. Lo veremos en unos pocos. Por lo que quiero que esto diga autos. Muy bien, así que ahora tenemos una nueva URL con una nueva página. Y voy a seguir adelante y correr como, oh, sólo estamos haciendo cosas de interfaz de usuario. Podemos simplemente hacer Control F5. No tenemos que depurar cada vez porque de esta manera es un poco más rápido. Ahora estamos cargando nuestra página de aplicación. Recuerda que esta es nuestra página de inicio que migramos desde nuestros archivos estáticos. Y si quisieras migrar a los otros, y probablemente también seré una buena práctica para ti. Pero ahora mismo estamos empezando con esto. Y luego cuando hago clic en autos, antes de que incluso haga clic en autos, es inspeccionar elemento. Inspeccionar elemento nos va a mostrar el H ref por cómo llegamos ahí. Si miras el miedo de las aurículas, dice barra de EHR, eso significa ir a casa. Slash cars significa meta de la URL base, que es lo que vemos en el navegador, localhost con ese número de puerto slash cars. Si nos fijamos en éste, verás localhost slash privacidad. Cuando voy adelante y golpeé los autos. Entonces veo que estoy aterrizando en mi nueva página, que es lista de cartas. Ves que ni siquiera tenía que decir especialmente index.html. Porque por defecto, en todas partes navegador irá primero a la página de índice. Entonces eso es realmente todo lo que se necesita para construir un nuevo enlace y conseguir que las páginas se vean. Muy bien, ahora veamos en espera el archivo de código y el archivo HTML puede interactuar con él. En este momento estoy mostrando esa lista de autos texto directamente en la página. Tal vez no siempre sea el caso como vimos cuando estábamos haciendo la codificación C Sharp. En ocasiones los datos que necesitan ser mostrados o interactuados con estos dinámicos a partir de la entrada del usuario. Necesita estar en una variable de alguna manera, pero aún necesitamos mostrarla. Entonces, ¿qué pasa si quisiera poner este bit de texto en una variable en el archivo de código y luego tenerlo mostrado. Así que sólo voy a cortarlo en el archivo de código. Lo que voy a hacer dentro de nuestra clase es darle una nueva propiedad. Así que sólo voy a decir prop, presione Tab dos veces y luego digo cadena. Y esto va a estar golpeando entonces en get one, la página carga este método llamado get es el primer método que se llama. Cada vez que navegues a una página, vas a golpear eso en, conseguir lo que quieras preparar para esa página. Si tienes que cargar datos, si tienes que sentarte en un mensaje como si estuviéramos a punto de hacer no, tienes que asegurarte de hacerlo en Git, entonces todo eso estará listo para cuando el pH se cargue al usuario. En este caso, quiero ver rumbo es igual a los tics que acabo de empatar, que es lista de autos. No, estoy preparando esta variable. Me estoy asegurando de que el valor esté disponible ante el paciente o es como hago que el valor se muestre en la página? Bueno, en la propia página, donde quiera que la quiera, que estaría entre estas etiquetas H1. Y entonces esto es lo que llamamos las vistas de la navaja borrador o levantamos una sintaxis. Más bien, la sintaxis de la razón nos permite entretejer o un código C-Sharp con nuestro código HTML. ¿ Está bien? Así que en cualquier momento ves un anuncio diciendo que te está preparando para escribir código C-sharp, porque este es el código C-Sharp que es un espacio de nombres de C-sharp. Sin embargo vemos HTML en el pH. Muy bien, así que déjame mostrarte si quería imprimir algo desde el lado C-agudo en lugar del HTML, todo lo que necesito es al firmar. Básicamente desde esa directiva que estás a punto de escribir C-sharp, ningún modelo es como una variable estática o una variable global que representa un objeto del modelo, que es el código todo lo que sea público en el código detrás archivo como este encabezado ya está disponible para mí por mí viendo modelo dot. Entonces obtengo todas las propiedades del modelo incluyendo mis personalizadas. Verás algunos que no pusiste. No hay problema, no te desanimes, no te vuelvas flusterizado ni nada. Pero si miras de cerca, ves golpear. Esa es la que acabo de crear. Sólo puedo decir encabezado model.py. Y luego si guardo eso y luego refresco la página y lo que puedes hacer mientras estás en este punto, siempre puedes simplemente hacer una compilación usando Control Shift y B. Y luego puedes simplemente refrescar la página. Probablemente aún tengas abierto desde cuando estabas depurando. Pero entonces usted ve aquí que todavía estamos viendo una lista de autos. Y si inspecciona elemento, no hay indicios de que sea C-Sharp o HTML. En lo que respecta a Brasil, solo está viendo el HTML. Entonces esa es una oferta polar es una sintaxis. Podemos poner dinámicamente cualquier cosa allí. Si quisiera cambiar el encabezamiento en lugar de mantener toda la página. Y si tuviera que mostrar que toma múltiples lugares en lugar de tener la estática toma múltiples bases, lo puse en una variable. Aquí. Lo cambio de variable solo para que sepamos que está funcionando. Y fui a hacer una construcción. Ahora una vez que se haga esa construcción, voy a hacer una actualización. Y luego C, Ahí vamos. Esta cosa autos de variable. Eso hace que sea mucho más fácil hacer una página dinámica donde podríamos tener que cambiar el texto sobre la marcha. Lo cambiamos una vez. Y entonces solo podemos conocer referencia a ella tantas veces en nuestro código como queramos. A diferencia de cuando estábamos haciendo nuestras páginas estáticas y si sumamos lo duro toma múltiples lugares, tenemos que ir manualmente y cambiar. Está en todas partes. Podemos hacer eso aquí, sólo agradable y fácil. Entonces si replico todas esas páginas son cruzadas o todas esas etiquetas, ahí está. Si lo cambio una vez, se cambia tantas veces. Muy bien, entonces esa es una forma agradable y fácil de entender cómo funciona la sintaxis. Cómo podemos poner algo en el archivo de código y acceder a él dentro de la página Razor. A continuación te voy a mostrar nuestro primer pedacito de lo que llamamos inyección de dependencia. Entonces lo que vamos a hacer es mover este texto de encabezado de la variable C-sharp aquí. Y lo vamos a poner en la configuración de la aplicación y luego vamos a mostrar un todo, solo se puede inyectar un absceso. Estas configuraciones, comen con bastante facilidad y las muestran en la página de la misma manera. 5. Mensaje desde ajustes: Por lo que ahora vamos a estar mirando cómo podemos inyectar dependencias en nuestro pH y acceder a los datos una manera muy lo que llamamos desacoplada. Entonces esa es una de las cuatro características más y marquesinas consulta de enlace descendente hace lo que llamamos inyección de dependencia, que es un principio muy importante en el desarrollo sólido. El D en la palabra sólido en realidad significa inyección de dependencia. Tan sólido es un montón de principios que nos ayudarían a practicar prácticas de codificación limpias y buenas. Y la inyección de dependencia es muy importante. Y.NET Core mezcla dependencia inyección, muy, muy fácil para nosotros. Lo que vamos a hacer es en la configuración de app dot archivo JSON, voy a poner en una nueva configuración. Y una vez más, esto es sólo para fines demo solo para que podamos entender cómo fluye todo tipo de y todo. Entonces vamos a sentarnos a una coma. Y luego fui a crear una nueva sección o un nuevo nodo para decir que esto es mensaje. Por lo que estoy llamando a este mensaje. Entonces básicamente lo que tenemos es como un par clave y valor. Entonces aquí estoy creando mi volumen y todos están separados por comas. Se nota que el registro es la clave y luego el valor es lo que llamamos objeto. Y el objeto tiene una clave que tiene en otro objeto, y cada clave tiene su propio valor. Cada vez que ves un colon, lo que está a la derecha es el valor, lo que está a la izquierda es la clave. Y luego la coma separa los nodos principales. Entonces este es un nodo Min que separa un host de carga, que es otra carga o vinculación de claves Vardy. Y luego eso es coma. Por lo que estamos creando nuestro propio mensaje de par de claves válido. Y entonces esa es la sintaxis básica JSON. Agradable y fácil de entender. Mensaje va a tener el valor. Esta es la lista de autos. Lección mensaje simple. Nada demasiado elegante. Sabes, lo dije en las cosas opuestas. ¿ Cómo accedo a este texto en la página para que se muestre más en el ADN al usuario. Entonces lo que tenemos que hacer es ir a nuestro archivo HTML index.js. Voy a crear otra propiedad. Voy a llamar a éste de menos. Por lo que para duplicar su control D o Control CNV, similar a Visa Studio Code, pero también funciona Control D. Tengo otra propiedad. Lo estoy llamando mensaje. Y necesito sentar mensaje para tener el valor del archivo de cosas opuestas, lo que significa que necesito acceder a la configuración. Por lo que al igual que discutimos en el archivo de inicio, estábamos inyectando aquí el objeto de configuración. Y entonces eso nos permitió acceder a cualquier cosa, o al menos los cargo porque no escribimos esto. Quien escribió esto hizo esa inyección para poder acceder a la configuración que lo hará. Vamos a seguir ese modelo. Los principios de inyección de dependencia uno, tienes un constructor, por lo que vamos a escribir C TOR presionar Tab dos veces y luego obtenemos el constructor. Comienza listas de parámetros, lo cual está bien. Pero entonces tenemos que decirle a qué dependencias debería ayudar. Entonces le voy a decir que debería estar usando la configuración I. Y si lo desea, sólo puede entrar en la startup sobre CS y se puede llevar la configuración I. Y estamos llamando a la configuración de variables. Línea roja significa que necesitamos una biblioteca, así que control dot y yo sólo puedo seguir adelante y golpear Enter. Por lo que incluirá la declaración using. Por lo que sólo hacemos eso y conseguir que la línea roja de la declaración de uso desaparece. No, necesito inicializarlo. Entonces le estoy diciendo que necesito la figuración ícono de la inversión de contenedor de control o veré contenedor. El startup básicamente pone todo en ese contenedor entre la startup en el archivo program.cs. Ponen esas cosas en el contenedor y luego en cualquier lugar de mi aplicación puedo acceder a ellas desde el contenedor. Así que literalmente cargó todo, Todo desde este archivo de configuración de aplicación en ese contenedor. Y estoy viendo que quiero acceder a ese archivo, que luego se obstruye a este tipo llamado configuración Uyghur. Necesito una variable local que pueda usar mientras que en esta página para acceder son como una copia. Entonces lo que voy a hacer es sólo decir conducto de control después de ponerlo en el constructor. Y luego fui a decir crear y asignar configuración de campo, y eso automáticamente hace ese proceso de inyección por mí. Por lo que ahora tengo esta versión local sólo para que podamos verlas de manera diferente. Voy a llamar a éste un subrayado. Y tiendo a hacer eso con mis campos en la configuración de partituras y puntos de Control para cambiar el nombre en todas partes, por lo que se deshace de ese error. Ahora que tenemos este objeto de configuración inyectado uno e inicializado y accesible a la página. Ahora puedo decir que mi mensaje debe ser igual a configuración. ¿ Está bien? El objeto de configuración me permite ver, dame la clave lo que quieres acceder para que recuerden que acabamos discutir par clave-valor es cuál es la clave que quería acceder al mensaje. Voy a ver la clave es mensaje. Recuerda de IRA, Básicamente es una matriz. Este archivo se convierte básicamente en una matriz a la que ahora puedo acceder usando la clave como subíndice. Una vez que hago eso, ahora tengo una nueva variable llamada mensaje que es accesible a mi página de índice. Así que puedo debajo del encabezamiento, poner tal vez unas etiquetas h4. Y luego solo vamos a separarlos con una etiqueta de RRHH. Se pone un poco de fantasía con él. Y fui a decir, firmaría modelo dot. Y luego recuerda que una vez que digo model.py tienen acceso a todas las propiedades que están dentro de la clase modelo, puede acceder al mensaje. Ningún mensaje no es sólo algo que escribimos y pusimos en una variable. El mensaje está afrontando todo el camino desde el malestar. ¿ Ves hasta dónde estamos lo que está trastocando? Tiene el valor y el par de claves para el mensaje. Y luego en la página, cargue. Estoy viendo cuando estás cargando esta página, quiero obtener una copia de este objeto de la dependencia o del contenedor del COI. Y estoy creando mi copia localmente. Y luego sobre la marcha puedo ver dónde se está cargando la página, ir a esa copia local del archivo de configuración de la aplicación, consígueme el valor que tiene el mensaje clave. Cuando hago todo eso, puedo hacer una construcción. Y todavía tengo mi página de la depuración anterior y lo ves sólo actualizaciones para mí? No. Estoy viendo ese mensaje viniendo desde el archivo de configuración de la aplicación. Eso es básicamente todo Dependency Injection funciona a medida que crece la aplicación. Vamos a ver definitivamente más de eso. Pero al menos esto es un bonito poco esencial de cómo en realidad se puede acceder a datos de otras partes de la aplicación y aún así conseguir que se muestren en la página. Y tus usuarios nunca serían más sabios en cuanto a dónde vienen estos datos, ya sea una base de datos o se trata de una variable en segundo plano. Pero estamos en control por lo que sabemos cómo hacerlo dinámico. Los usuarios solo viendo lo que parece ser una página muy estática, cargarla a ellos. 6. Añadir un marco de entidad: Hasta ahora hemos estado viendo algunos de los conceptos básicos de cómo podemos conseguir páginas de Razor muestren fechas dinámicas vienen de nuestro código C-Sharp. La realidad, sin embargo, es que nosotros, en nuestro escenario, realmente no vamos a estar codificando duro este tipo de valores y poniendo en variables y mostrando, sobre todo dado el tipo de aplicación que estamos edificio, que es una aplicación de reserva de autos donde vas a necesitar lista de tarjetas que puede demostrarse cambiar. Entra a la empresa un auto nuevo, uno se retira, etcétera donde fuimos después de gestionar la reserva. Entonces lo que tenemos que hacer es encontrar una forma muy dinámica de almacenar realmente este tipo de datos. Entonces necesitamos emplear los servicios de Entity Framework para que podamos uno, crear la base de datos para interactuar con la base de datos, y tres, seguir construyendo sobre la base de datos. Lo que vamos a estar haciendo antes de meternos en alguna de las complicaciones es engendrar, lo que necesitamos almacenar, lo vamos a hacer relativamente simple, pero es bastante complicado que podamos conseguir buena idea de lo que hay que cubrir en un escenario general. Lo que queremos hacer es emplear a la S en sólido, que es separación de preocupaciones. Y el principio detrás de eso es uno, un método o un archivo nunca debe tener más de una responsabilidad. Por eso es bueno que para cada página haya un archivo de código dedicado. Entonces toda la responsabilidad de este archivo de código es para esa página. Lo que vamos a hacer es quitarlo solo archivos y lo vamos a aplicar a proyectos. Ahora que estamos pensando en las interacciones de la base de datos, lo que tenemos que hacer es crear otro proyecto que va a hospedar o wholes más bien todos nuestros objetos relacionados con la base de datos. Solo voy a minimizar o colapsar la reserva del auto y fui directamente a la solución. Haga clic en Agregar. Y voy a crear un nuevo proyecto. De este listado de proyectos, vamos a elegir una biblioteca de clases. Entonces si no lo tienes en el reciente proyecto estimula, siempre puedes buscar. Lo que queremos es una biblioteca de clases C-Sharp. Puedes seguir adelante y seleccionar eso y estamos llamando a esta reserva actual hasta punto Theta. Entonces el nombre va a significar que este es el proyecto de datos. Hit Next, y queremos mantenerlo como un proyecto dotnet F5 y crear una librerías de clase de versión muy despojada de la obligación C-sharp son dos proyectos C-sharp a los que se solían. Porque se puede ver que este proyecto acaba de decir que archivo CSV y el único clasificador, casi parece una aplicación de consola y los expositores conocen program.cs. Y si incluso miras en el archivo del proyecto real, verás que todas las lágrimas son solo el marco objetivo. Si vuelves a tu consola, aplicaciones de C-sharp, notarías que también tienen una instrucción de ejecución para hacerle saber que se trata de un archivo ejecutable. Lo que vamos a necesitar hacer aquí es eliminar la primera clase, es definir algunas clases. Entonces nuestro, lo que estamos haciendo es crear entidades, que realmente sólo podría pedir archivos que se convertirán en tablas de base de datos. Entonces lo que sea, y ya miramos OOP, sea cual sea que nuestras propiedades de los datos que quisiéramos almacenar. Estamos creando nuestra clase para representar eso, que más adelante en realidad nos convertiremos en una tabla a través de la API es que Entity Framework nos permite por ahora solo queríamos entender cómo diseñamos el modelo de dominio. Por lo que nuestro primero me dejó modelo, desde que empezamos con los autos, serán cuatro cartas. Por lo que queremos una mesa para almacenar los autos. ¿ Cuáles son las propiedades de los autos que necesitamos para almacenar? Bueno, en general, eso podría diferir en función de las necesidades empresariales, los diferentes escenarios. Así que sólo voy a basarlo fuera de mi escenario. Podrías hacer un poco más o financiarlo necesita hacer un poco menos que yo. Pero mientras comprendan el alcance general de lo que estamos tratando de lograr, entonces eso no es problema. Lo que tenemos que hacer es crear nuestra primera lección haciendo clic derecho en el proyecto de datos, estoy agregando una clase y lo voy a llamar símbolo de coche. Dentro de coche. Vamos a hacer pública esta clase. Y luego defendemos las propiedades. El primer inmueble de cualquier tabla de base de datos. Si aún no has hecho bases de datos, no te preocupes por mí esto lo más amable posible. Si estás familiarizado con las bases de datos, sabrás que el siempre empieza con una clave primaria que es auto-incrementando. Si está familiarizado con el uso de SQL Server o así sucesivamente. Sabes que tienes que pasar por unos pasos, tienes que sentarte y restricción de identidad, también tienes que hacerle saber lo más incrementos IN1 y así sucesivamente. Con Entity Framework o en el diseño una entidad que sabemos que vamos a utilizar Entity Framework para manejar. Todo lo que realmente necesitas hacer es llamarlo ID. Simplemente haciendo esto en diferentes donde sabremos que, vale, esta es la clave primaria y debe ser auto-incrementándose. Eso es todo. Por lo que siempre tienen la clave principal para cada, la mayoría, si no todas las entidades, el 90% de sus entidades siempre debe tener un valor de clave primaria llamado ID. Si no quieres llamarlo ID, entonces hay otras cosas que podrías tener que hacer. Usando Entity Framework para que reconozca como clave primaria. Pero entre llamarlo ID o ID de coche o identificador de nombre de tabla, esos dos garantizarán que Entity Framework Core fue visto como la clave principal. Tenemos una identificación, ¿qué necesitamos? Voy a decir pública int año, tal vez el año del vehículo sea importante, también. Ir a almacenar el año. Y lo siguiente que voy a almacenar es el nombre de la cuerda, nombre del vehículo, Toyota Yaris, etcétera sólo voy a mantenerlo simple y eso siempre está tirando una pelota. El auto habría creado nuestra primera entidad. Ahora lo siguiente que necesitamos para que Entity Framework reconozca que esta clase debe ser una tabla, se llama contexto DB. Entonces DB abreviatura de contexto de base de datos, lo que significa que estoy mirando todos los recursos en la base de datos, y los reconozco como tales. Vamos a estar configurando el contexto DB. No vamos a estar conectando ni creando ninguna base de datos por el momento. Sólo estamos estableciendo las bases, ¿verdad? No. Voy a hacer clic derecho una vez más y agregar otro archivo, nuevo elemento o clase más bien. Y voy a llamar a esta reserva de un auto. Db contexto, niacina, nombre fácil de recordar. Carb mirando hacia arriba contextos DVI, sólo otro archivo de clase. Ahora el contexto DB va a ser una vez más público. Y va a heredar de una clase base que nos da Entity Framework llamado contexto DB. Con sólo escribir el contexto DB. Y si le das a Visual Studio unos segundos, te darás cuenta, de acuerdo, maravillas y herramienta de libro de errores, para poder utilizar los contextos DVI, necesitas instalar un paquete llamado marco NTD. Por lo que tienes Entidad Marco y trabajo anti diferente Corte. Estamos utilizando dotnet Core, por lo que tenemos que usar Entity Framework Core, que es el último y más grande de Entity Framework. Ahora lo genial es que necesitamos usar un gestor de paquetes. Entonces, en lugar de que tengamos que irnos y encontrar las cosas manualmente, Visual Studio viene con un gestor de paquetes llamado New get. Tenemos dos opciones. Podemos permitir que simplemente siga adelante y lo encuentre para nosotros e instalarlo. O podríamos ir manualmente, hacer clic derecho y presionar Administrar paquetes NuGet. Por lo que es bueno entender todas tus opciones porque el desarrollador que lo sabe necesita Entity Framework probablemente comenzaría aquí. Probablemente sólo irías a NuGet, ir a los bros. Y luego vería todos los paquetes disponibles para él. Y entonces realmente vería que tienes Microsoft dot Entity Framework Core dot SQL Server. Y ahí está la que se anunciaba para decir que tengo un montón de otros, pero no vamos a preocuparnos por los que no necesitas. Así que en realidad, vamos a estar usando bases de datos de SQL Server en diferentes núcleos de trabajo es en realidad de código abierto y disponible para la mayoría de los motores de bases de datos. En MySQL, postgres SQL secuela luz, todos ellos son diferentes motores de base de datos o proveedores. En el marco proporciona API que le permiten usar C-sharp para hablar con cualquier puerta única. No obstante, si nosotros, ya que estamos utilizando SQL Server, sólo podemos seguir adelante e instalar el en diferente trabajo core dot SQL Server, que nos dará las API del servidor SQL así como la biblioteca base para Entity Framework Core. Así que sólo voy a usar NuGet gestor de paquetes. Y todo lo que tengo que hacer es golpear esta flecha hacia abajo. Podemos elegir versión. Vemos que esta es la última versión estable. No es necesario modificar eso. Golpea Instalar, darte unos segundos. Podrías obtener licencias y acuerdos pronunciables. Y como esos co-morbosos, basta con hacer clic en Aceptar y aceptar y denotar el tiempo que está instalado. Y cuando volvamos al proyecto CS, verá que se agrega un grupo de artículos donde el paquete hace referencia que se pone. Eso está bien. Podemos dejar que lo dejemos hacer lo suyo en el fondo. Pero ahora cuando vamos alrededor de dos contextos de dB y control, vemos que tenemos la capacidad de simplemente agregar el espacio de nombres. Esa fue nuestra primera prueba de cómo podemos usar NuGet package manager para agregar bibliotecas que faltan inherentemente. Adelante en la declaración de uso. Ahora tenemos el contexto DB. Para que podamos dejar que el contexto DB sepa cuáles deben ser las tablas. Tenemos que sumar al público DB sit. Entonces le decimos crea un Db, Db ciudades Entity Framework. Habla por una mesa. El contexto representa la base de datos, conjuntos BB representa una tabla. Tenemos que proporcionar el modelo que deben basarse estas tablas. Bueno, hemos creado nuestro modelo en forma de auto. Alguien que diga base de datos. Tendrás una mesa en coche modelado. Y debes llamarlo autos cuando se crea en la base de datos real. Así que veamos eso otra vez. Toda esta clase representa nuestra base de datos en todos los activos que estarán ahí para ver las tablas, procedimientos almacenados, etc. Una vez que queremos agregar una tabla, queremos la mitad para crear el modelo que debe seguir la tabla. Entonces en el caso del auto, le dimos las propiedades que sabemos hacer la clase por no. Esto es realmente solo mostrar cómo se ve nuestra clase como una tabla en términos de desarrollo de bases de datos. Acabamos de crear una clase con todas las propiedades, todos los campos que conocemos nuestra o tabla necesita para tener los tipos de datos. Y luego le estamos diciendo al contexto de la base de datos que necesito una nueva mesa o un conjunto DV de tipo auto. Y quería llamar a autos. Cuando volvamos, lo que vamos a hacer es configurar mi agresión donde en realidad le decimos uno, generar código que va a crear la base de datos y vamos a evaluar cómo eso mira y hacia nosotros realmente lo haremos esa base de datos y ver que todo esto va a funcionar en la forma en que estamos hablando de ella. No. 7. Añadir base de datos a Proyecto: Bienvenidos de vuelta chicos. Entonces ahora vamos a estar sentados o base de datos real. Ya configuramos nuestro contexto, que básicamente representa una conexión a la base de datos. Ya creamos al menos una entidad o una tabla para esa base de datos. No, necesitamos una vez arriba lo que llamamos cadena de conexión. Y luego para crear lo que llamamos migración, que sería el conjunto de instrucciones que podría usar Entity Framework para informar cómo va a ir sobre la creación de la tabla y la base de datos y cualquier otros activos que deben crearse en consecuencia. Subimos a nuestra configuración de aplicaciones desde nuestra reserva de autos. Y lo que tenemos que hacer aquí es agregar nuestra cadena de conexión. Ahora la sintaxis para un flujo clínico se ve algo así, y lo acabo de agregar justo encima del registro. Entonces recuerda que todo esto es un gran objeto JSON. Estoy agregando una nueva clave llamada cadenas de conexión. Y luego esa clave tiene un valor de objeto que toma otro par de valores clave, conexión predeterminada, y luego este es el valor. Así que vamos a pasar por lo que tiene este valor. Este valor tiene un servidor y el nombre del servidor es más o menos el nombre de la máquina o el nombre de la instancia de base de datos. Si no estás tan familiarizado con las bases de datos, eso está bien. Contamos con un proveedor de base de datos incorporado con Visual Studio llamado Local DB, MS Sql base de datos local, siempre se puede llegar a estas bases de datos yendo al Explorador de Objetos de SQL Server. Si no quieres tenerlo de un lado como yo, siempre pueden ir a View. Y luego puedes buscar Explorador de objetos de SQL Server. Entonces esto te da acceso instantáneo a esa instancia de base de datos y puedes simplemente desplegable y es local DB slash MS SQL local DB en el B2C, todos esos servidores de bases de datos es igual a Debian local, escríbelo exactamente cómo lo ves. Paréntesis abierto, DB local, paréntesis de cierre. El doble slash es porque necesitamos escapar de la barra. Si tenemos una sesión, se obtiene ese error. Necesitamos tener esa barra doble en el contexto de este archivo y MS SQL DB local. Entonces tenemos un punto y coma y luego indicamos la base de datos es igual a auto reservando arriba en la puntuación db. Ahora, una vez más, aún no hemos creado esta base de datos, pero sabemos cómo queremos que se llame la base de datos, por lo que le estamos haciendo saber en ese momento. Más adelante verás que tienes conexión de confianza es igual a true y múltiples conjuntos de resultados activos es igual a true. Por lo que se trata de entidades relacionadas con la seguridad para la usabilidad. solo puedas seguir adelante y replicar todo eso. Ahora después de haber volteado en nuestra cadena de conexión, necesitamos dejar que la aplicación o que al inicio estés usando esta cadena de conexión para la base de datos. Todavía en nuestra app web, vamos a jumbo a la startup. Entonces en los servicios de configuración, vamos a registrar nuestro hilo de contextos DB. Entonces fui a decir servicios que agregan contexto DB. Y luego pongo en nombre de los contextos DVI. Y como estoy haciendo esto, estoy mirando a través y viendo que tengo un nombre aquí y otro nombre de este lado. Entonces en realidad esto es lo que quería que me llamaran. Lo llamé Libro de autos Up DB context en error. Fui a actualizarlo, ¿verdad? Ningún carburador busca el contexto DB del nombre de archivo y luego actualiza el nombre de la clase en consecuencia. Muy bien, entonces ahora que se hace ese refactor, me siento un poco mejor y puedo volver aquí. Entonces los servicios dot BID, context, y la forma en que he escrito corchetes con el nombre del contexto DB, y luego tenemos las opciones. Entonces obviamente esto realmente no está registrado lo que estamos tratando de hacer, de ahí las líneas rojas. Entonces lo que voy a hacer es control dot. Entonces va a indicar que necesito agregar una referencia a mi auto reserva hasta proyecto de datos. Muy bien, entonces lo tenemos en dos proyectos diferentes a diferencial llamarán asambleas. Y en este momento el Visual Studio o la solución lo ve. Vale, estoy tratando de hacer referencia a algo que no está en el proyecto actual, que lo veo en otro proyecto. Te gustaría sumar la referencia que fui a decir que sí, por favor adelante y añada la referencia. Una vez que haga eso, verá que este nulo cambia a ese color que indica que sabe qué archivo es y todo es. De acuerdo, pero entonces todavía tengo otro error que sólo voy a controlar. Y me está diciendo que necesito agregar una declaración de uso para Entity Framework Core para poder seguir adelante y hacer eso. No, ya no tengo más errores. Eso es agujero. Agregamos ese bit de código con las opciones para usar SQL Server, como dije, Entity Framework, core puede soportar múltiples motores de bases de datos. Entonces estamos especificando que estamos usando SQL Server aquí. Y luego estoy buscando en la configuración. Recuerde, todo eso se inyectó antes, el punto de configuración get cadena de conexión. Entonces esa es una función incorporada de la configuración. Buscaban la conexión predeterminada. Entonces esa conexión predeterminada, y luego está obteniendo ese valor. Entonces a cualquier cosa que puedas haber llamado esto si no quisieras llamarlo una conexión predeterminada para mí, quería llamar a la carbocación hasta la conexión, sea que lo llames, solo tenemos que conseguir eso cadena de conexión aquí. Ahora hagamos una factura rápida solo para asegurarnos de que no hemos roto nada para construir fue exitoso. Vamos a seguir adelante. Por lo que el siguiente paso necesito realmente generar esta base de datos. Entonces como dije, tenemos que hacer una migración y luego podemos realmente generar la base de datos después de la migración. Lo que voy a hacer en proyecto de datos una vez más, voy a saltar hacia abajo a Administrar paquetes NuGet. Entonces vamos a buscar el paquete Entity Framework Core dot tools. Si no lo ves enumerado aquí, listo como es para mí, siempre puedes seguir adelante y buscarlo. Lo veo aquí. Sólo voy a seguir adelante e instalarlo como de costumbre. Adelante y acepta cualquier término y condiciones y sepa que está instalado. Permítanme simplemente darte un trasfondo rápido cuanto a lo que estas herramientas te permiten hacer. Si nos fijamos en la descripción de la biblioteca, dice que habilita a EE. UU., a usar comandos de uso común. Tienes agregar migración, eso es lo que estamos a punto de hacer. Ha caído la base de datos, obtener contextos DVI, cosas relacionadas con la migración, cosas relacionadas con el andamiaje, y migración de scripts y generación de comandos no relacionados. Entonces estos son todos los comandos y estos son en realidad comandos powershell que vamos a ejecutar usando nuestra consola de Package Manager. Esa consola de Package Manager, si no lo estás viendo donde lo tengo en mi barra de tareas, una vez más, siempre puedes ir a Herramientas y luego obtienes empaquetada manager y una consola de Package Manager. Muy bien, así que una vez que hagas eso, obtendrás una ventana similar a esta, donde te está pidiendo el comando. Lo que vamos a tener que hacer, uno es cambiar nuestro proyecto predeterminado o un proyecto de datos porque ahí es donde está nuestro contexto DB. Ahí es donde queremos nuestras migraciones y todo se levanta está relacionado con vivir. Fui a cambiar el defecto, predije un proyecto de datos. Y luego voy a decir agregar migración de guión e incluso puede presionar Tab para completarla por ti. Entonces voy a llamar a esta migración inicial. Después de eso, acabo de presionar enter. Se reconstruirá el proyecto y luego estoy recibiendo este error. No problemes. Entonces dice que mi proyecto de startup no hace referencia a esta biblioteca, eso está bien. Este paquete es necesario para que en el marco de herramientas Core funcionen. Así que en realidad nos están diciendo lo que está mal. No hay problema. Por lo que la señorita desciende la biomasa . Vamos a arreglarlo. Vamos a hacer clic derecho en nuestro proyecto web. Usa NuGet. Y solo estoy tratando de mostrarte lo fácil que es conseguir estas palancas una vez que faltan, obtiene más de lo probable que las tenga. Entonces adelante, ve a NuGet y luego solo voy a pegar el nombre de la biblioteca que decía. Una vez más, siempre se puede simplemente buscar en el, escribiendo la barra de búsqueda. Y luego una vez que lo consiga, solo puedo instalarlo. Cuando se hace eso. Ahora volveré a mi consola de Package Manager y solo presionaré. Así que cuando presionas la flecha hacia arriba, te compran el más recientemente, intentado, al menos intento de comando. Así que sólo voy a presionar, me compren esa migración, presione Enter otra vez, y en ninguna parte obtengo otro error. No voy a esconderme estas detenciones porque a veces se tiende a olvidar algunos de los pasos y es bueno ver los errores y saber trabajar a través de ellos. Claramente estoy olvidando algunos pasos aquí, pero eso no es problema ya el alcance del error, los arreglaremos. Entonces éste está diciendo que había una flecha accediendo a los servicios de alojamiento. Y tiene que haber algún constructor que tome la configuración que se está pasando. Entonces permítanme explicar exactamente lo que esto está diciendo. Bach, cuando habríamos configurado en nuestra clase startup que cada uno debería estar usando el contexto DB. Y estaría pasando en estas configuraciones. Entonces las opciones, más o menos todo este objeto aquí llamado opciones, nos permitirían poner en una serie de configuraciones diferentes que queremos ir y mantener interactuada la base con cuando la aplicación inicie su entidad. Es muy simple, ¿verdad? No, la única opción aquí es que debe usar la mezcla en cuerda. No obstante, esto no es suficiente porque mientras estamos tendidos aplicación utilizar esta base de datos y desconexiones, usted es este contextos de base de datos y lineal representan la base de datos que es nuestra desconexión y cadena. Tenemos que dejar que nuestros contextos DVI se supone que es una herramienta relativa, sean cuales sean las opciones que estemos pasando. Volvamos a saltar a nuestro contexto DB y crearemos un constructor. Por lo que sólo voy a leer CT OR, y presionar Tab, Tab. Y lo que tenemos que pasar aquí serían opciones de contexto DB. Y las opciones de contexto DB serían una herramienta relativa o arranque de coche en el contexto DB. Y sólo voy a llamarlo Opciones. Y entonces tenemos que dejar que el bajo note que debe usar las mismas opciones base por supuesto representa o contextos DB de la herencia. Esto está completando toda esa jerarquía de inyección de dependencia a la que habría aludido. Donde cuando se inicia la aplicación, una vez más, estamos viendo usar el contexto DB que se encuentra en este archivo y darle estas opciones para gobernarlo sin lo que acabamos de hacer con todos estos que línea de código. El contexto DB solo estaba sentado ahí en la-la tierra en ninguna parte dejándote saber esto es lo que ser consciente del hecho de que las opciones serán pasadas. Y también posible con los contextos DB, que es la clase base que nos da EF Core. Entonces ahora que lo hemos hecho, intentemos una vez más la migración a puerta. Y por fin tenemos un intento de migración exitoso. Muy bien. Ahora tenemos esta migración inicial. Por último, como obtendrías una nueva carpeta llamada migraciones que puedes colapsar. Pero cada vez que hacemos una migración o cada vez que hacemos un cambio a la base de datos, agregando una nueva tabla o columna o cambiando algo, tenemos que hacer una migración. El archivo de migración generará y dirá que estos son los cambios son estas son las cosas que voy a hacer. Y después podemos ejecutarlos y se mantendrá un historial. Por lo que es una buena manera de mantener un historial de todos los cambios que se están haciendo en la base de datos. Si en algún momento hacemos un cambio y eso no es exactamente lo queríamos no deseado para eliminar la migración, entonces se puede ejecutar literalmente el comando elimina la migración, que simplemente deshacer más migración reciente. Solo un escaneo rápido hasta lo que está diciendo este archivo de migración. Está diciendo, bueno, tenemos una clase llamada constructor de migración, que se está inicializando o positon más bien. Y entonces este constructor nos permite crear el nombre de la tabla es autos. Así que recuerda que sea cual sea el nombre que pongas aquí, ese es el nombre de la mesa entrando. Por lo que está diciendo crear una tabla con el nombre autos y las columnas deben ser ID. Recuerda que dije una vez que lo llames, ID sabrá automáticamente que su identidad, su clave principal. Ya está sentando todas esas restricciones en la columna ID, cuatro filas. Y creará el año y las columnas de nombres para nosotros. Eso está en la función. Entonces tienes un don not function, que básicamente dice, esto es lo que voy a hacer para deshacer esto. Entonces si alguna vez hacemos ACI en lugar la base de datos y luego el subrayado se dan cuenta, oh snap, eso no es realmente lo que quería después de mí. Tengo que cambiar esto rápidamente. Y se quiere deshacer la migración así como el cambio a la base de datos. Porque lo que sucede es que si los cambios ya aplicados a la base de datos en este momento este archivo no es no existe ninguna base de datos. Este es sólo un archivo de instrucciones para ver cuándo la base de datos esto es lo que voy a hacer. Si ya tienes la migración y ya la aplicas a la base de datos, entonces tendrás que retroceder la migración antes de poder eliminarla del historial. Este método don 't es lo que contiene instrucciones y decir, bueno, estos son los cambios que se hicieron. Bueno, esto es todo lo que voy a deshacer. Entonces éste dice crear una mesa con todas esas cosas. El Deshacer por eso sería dejar caer la mesa. A medida que avanzamos, veremos más de eso. Así que no te preocupes demasiado por ello. Sé que sólo queríamos asegurarnos de que ya tenemos que ser excretados. Entonces el siguiente comando que vamos a ejecutar es actualizar la base de datos. Puedes seguir adelante y ejecutar eso. Y luego una vez que eso ha sido exitoso, entonces podemos ir y verificar que nuestra base de datos fue creada. Así que vuelve a tu Explorador de objetos de SQL Server. Después expande, entra en bases de datos, y luego verá el auto iniciando BB. En esa base de datos, verás autos para una tabla y el historial de migraciones de EF como tabla. Por lo que esta mesa transporta todas las migraciones que se han aplicado a la base de datos. Y después veremos que esta base de datos se rellena a medida que ponemos más y más tablas en ella. 8. Clases de datos de Scaffolding: Muy bien, entonces ahora que hemos hecho nuestra migración, hemos creado nuestra base de datos. El siguiente paso lógico sería cargar la aplicación para interactuar con la base de datos. Porque, bueno, no querrías enviar necesariamente a tus usuarios a tu base de datos para poder gestionar el auto. No todo el mundo conocerá SQL, no todos entenderán cómo operar en ese entorno, por eso tenemos interfaces de usuario, nuestras aplicaciones web, que nos permiten realizar diferentes operaciones de una manera más fácil de usar. Muy bien, entonces lo que vamos a hacer es explorar páginas completas de razón hace que sea muy, muy perfecta para nosotros generar realmente interfaces de usuario para interactuar con nuestra base de datos. Ya como que empezamos a construir páginas antiguas para los autos. Y lo que pasaría es que tengamos la página de índice y el índice suele ser la lista de autos. Y entonces tendrías el otro lo que llamar a las páginas de multitudes. Entonces C y corroer representa crear, nuestro representa leer. Fuiste presenta actualización, y D representa eliminar crudo. Básicamente cada aplicación que alguna vez usarás en tu aplicación móvil en tu nevera, sea lo que sea, todo lo que están haciendo son operaciones crudas. Están mirando a la vista algo. Quitarlo si no lo quieres, cámbialo si no te gusta o va a crear otra cosa. Así corroe, ese es el quid de cada aplicación. Entonces lo que vamos a hacer es crear las páginas de multitud para nuestros autos. Debido a que necesitamos poder gestionar una flota, queremos ver todos los autos en datos BSO sobre para eliminar los que ya no están aquí. mejor alguien cometió un error tipográfico, quieres actualizarlo, etcétera En realidad solo voy a eliminar esta primera página de índice que creamos para autos. Lo que vamos a hacer es una página de índice scuffled y nueva usando Entity Framework. Entonces lo que podemos hacer es hacer clic derecho o carpeta autos ir a agregar una página Razor. Entonces cuando surja este cuadro de diálogo, tenemos tres opciones. Tenemos los vacíos, un pH, que ya miramos. Tenemos la razón por la que pgs es el Entity Framework, por lo que usaremos ese. Por lo que este siguiente cuadro de diálogo nos permite decir cuál es el nombre de la PGY1. Estamos reemplazando los bits de índice. Simplemente puedo decirle índice entonces la plantilla preguntaría, Ok, ¿lo quieres como plantilla de lista, editar plantilla. Por lo que en realidad podemos andamios carga de forma o toda la pantalla para lo que queramos. Entonces en este caso queremos la lista porque la página de índice, en términos generales, tendría la lista de cualquier tipo de datos o datos que esté mostrando. La clase más modelo sería la siguiente. Y la clase modal significa modelo caminado o modelo de tabla ¿se supone que debo usar al generar esta página? Entonces puedo decir auto. Lo haremos, lo haremos es seguir adelante y genera código para que pueda mostrar los diferentes puntos de datos de la entidad automotriz. El contexto de datos más por supuesto serían contextos RDB, que es donde se irán todos los objetos de nuestra base de datos. En fin, no queremos tener que cambiar ninguna de estas otras configuraciones y podemos seguir adelante y golpear Agregar. Sé que me encontré con este error que quizá no tengas, pero vamos a trabajar a través de este árabe porque desde versiones recientes de dotnet Core, este error ha ocurrido durante el procedimiento de andamios y se es bueno entender al menos agujero se puede conseguir alrededor de él. A veces es muy frustrante, pero vamos a trabajar a través de él. Por lo que hay pocas cosas que se recomiendan. Uno, lo necesitas y sólo voy a cancelar todo esto. Una es ir a Herramientas e ir a paquetes NuGet, Administrador de paquetes , lo siento, y luego a la Configuración. Y luego vas a limpiar todo lo que obtienes cachés. Entonces adelante y pega eso. A continuación es seguir adelante y construir o limpiar la solución. Entonces vamos a ejecutar una solución limpia. Y eso trajo tiene que hacer. Y luego estoy viendo que tengo dos errores aquí. Tengo un error con respecto a las versiones de los paquetes. Entonces eso es generalmente lo que causa este error. Cuando los paquetes son las versiones de los paquetes que podrías estar usando bullet necesariamente coinciden con las versiones que el andamio o busca. No estoy seguro por qué. Esta es una de esas partes más irritantes de ambos lo que Microsoft, el equipo de Microsoft ha estado haciendo en los últimos tiempos. Pero solo trabajemos a través del Alma. No, mis paquetes y sólo voy a hacer click en el archivo del proyecto y puedo ver que mis paquetes están en 5.09. Entonces lo que voy a hacer es dejarlos caer a 5.08. Entonces en el archivo CSV realidad puedo simplemente cambiar los bolsillos. Por lo que esta es otra forma en que puedes cambiar versión del bucket para que puedas cambiarla aquí mismo. Pero entonces si no estás del todo seguro de cuáles son los números de versión, no hay problema. usaremos que obtienes para la siguiente. Por lo que siempre puedes bajar al nuevo gestor de paquetes get in para ese proyecto en sí, mira las versiones instaladas, y luego verás qué versiones tienes. Y luego puedes cambiar esa versión. Por lo que solo dejaré caer la versión 2.08 y luego haga clic en Actualizar. Por lo que solo se puede hacer eso para la finalización del núcleo dotnet y paquetes de diseño para el Entity Framework. Después de haber hecho esa operación, veo que he construido con éxito. Entonces voy a probar de nuevo el andamio. Voy a hacer clic derecho autos tenían página Razor y luego pagina usando Entity Framework y simplemente llenamos las mismas cosas que acabamos de llenar. Entonces plantilla de índice es lista, clases de modelo, auto, y luego adelante y pulsa Agregar. Está bien, es como si fuera otra área. Éste al menos es un poco más informativo. Dice que hubo un ganando el generador de código seleccionado para regañar, instalar este bolsillo en particular. Entonces bien, no hay problema. Vamos a seguir adelante y seguir las instrucciones. En el fondo. Se puede ver eso y se llega a realmente empezar instalar ese mismo bolsillo. Voy a probar esto una vez más. Esta vez tenemos levantamiento. Entonces no sé que eso fue todo un ciclo de tratar de conseguir un trabajo distinto. Una vez más, sucede cuando se publican ciertas versiones, pero el mecanismo subyacente en Visual Studio no se ha actualizado para saber que esta es la versión de la biblioteca, se debe utilizar. Por lo que podría tener un poco de ida y vuelta con eso. Y como dije, no hay muchos recursos en línea para guiarte exactamente qué hacer. Esos pasos, en términos generales, funcionarán para ti. Pero con lo que terminamos es archivo índice. El archivo de código. En el valor del índice, se ve que se ha generado mucho HTML para nosotros. Y en el archivo de código verás que también se ha creado alguna cantidad de C-sharp para nosotros. Entonces discutamos brevemente lo que está sucediendo aquí. En el fichero índice. Empecemos con un archivo de código porque eso está en la lista. Mira lo que estamos viendo aquí es inyección. Entonces recuerda que hicimos forma de inyección de dependencia antes con un archivo de config porque la config tiene algo que queríamos. No queríamos crear una instancia completamente nueva del archivo de configuración cada vez que queremos algo. Así que en cambio estamos tomando esa copia compartida que estaba registrada en la aplicación para ser compartida entre todos. Entonces, en esencia, cuando habríamos ido a nuestra clase de startup y registramos contextos RDB, ya estábamos empezando a compartirlo a través de la aplicación, convirtiéndola así en un candidato a inyección en cualquier lugar que queramos. Entonces esto somos nosotros inyectando una instancia o inyectando la versión esquilada del contexto e inicializando nuestra propia copia privada en este fichero. Eso es inyección de dependencia en uno-a-uno. En cualquier momento que quieras hacer inyección de dependencia va a verse algo como esto y puedes inyectar múltiples cosas como a voluntad. Entonces no te limitas a una sola cosa a la vez. Ahora que tenemos el, en el contexto inyectado en nuestro índice, lo que estamos haciendo aquí es crear un objeto de lista de tipo auto, por lo que es sólo una colección de auto. Muy bien. Deberíamos llamar realmente a esto autos. Así que sólo voy a llamar a este autos porque es una lista. Y tiendo a ponerme muy específico con mi nomenclatura, al menos que lo pluralizo. Si es singular, entonces es singular. Por lo que puedes renombrarlo para usar puntos de Control y permitir que refleje hasta que todas las demás referencias para ti. Y entonces lo que tenemos está por conseguir. Entonces recuerda lo que discutimos cuando se carga la página. Tenemos el encendido, vamos, llegar aquí está siendo despedido. Una vez que navegamos a esta página de índice, se va a llamar automáticamente a este método. Este método configura cualquier dato o lo que necesitemos para la página, igual que hicimos con la config e inicializando nuestras variables en el ejemplo anterior. Entonces aquí estoy diciendo que mi lista actual de autos debe ser igual a. Y luego vamos a esperar los resultados de llamar a la mesa contextual dot cars y conseguir todos los elementos. Entonces este es el clásico Entity Framework. Entity Framework nos da acceso a la base de datos mediante este archivo de contexto. Cualesquiera que sean las mesas que declaramos, porque recuerden , autos, ponemos autos ahí, eso es nuestro. Eso es todo lo que está haciendo. Está diciendo contexto, dame los autos. Y entonces la forma en que funciona Entity Framework es que esto es lo que llamamos método de ejecución. Está viendo lista asíncrona significa que realidad me dan todo en la tabla como una lista. Y luego estamos almacenando esa lista en nuestra variable local o propiedad llamada autos. Después de todo eso se hace y se ha configurado la página, saltemos a nuestro HTML real. Entonces en la página HTML real, sabe que es una inexperiencia, dio su índice de no nombre encontró que todas esas pequeñas cosas son porque llamamos el índice de pH. Llegamos al botón Crear nuevo de cortesía, ¿verdad? Por lo que tenemos un enlace al crear nuevo. Por supuesto que esa página aún no existe, pero eso está bien. Obtenemos una tabla, y esa tabla tiene una cabecera o una sección de cabecera con las filas de encabezado. Por lo que tenemos el encabezado de la mesa para el año por delante, permitirnos el nombre. Entonces tenemos otra columna de cabecera de tabla que está vacía. Y luego para cada artículo que entró, el modelo dot car, modelar autos, esa es nuestra lista de autos. Y luego estamos usando eso para que cada bucle pase por cada ítem en esa lista de autos que estamos viendo. Dame un display para el año, dame un display para el nombre. Y en esa tercera columna que no tuvo ningún golpe, que podría haber llamado a estas acciones, tal vez lo que hay en esa tercera columna, dame tres enlaces querían editar, querer eliminar, y uno, sólo ver los detalles. Y cada uno pasará por encima de esa identificación. Recuerde, el ID de clave principal, Eso es lo que identifica de forma única una columna en la base de datos o ese rol en lugar de la base de datos. Y luego solo estamos atando eso al botón que cuando hacemos clic en Editar en cualquiera de estos roles, sepamos qué ID vamos a ver. Solo echemos un vistazo rápido a lo que se generó para nosotros. Aquí está nuestro pH. Esta es nuestra nueva página. Vemos aquí que tenemos algo parecido a una mesa. Si no estás familiarizado con todas las mesas, mira en Bootstrap, entonces eso es realmente lo que van a parecer. Pero tenemos la tabla, tenemos la columna para ti, tenemos nombre, y luego tenemos esa columna vacía la cual va a tener los enlaces. Lo que no tenemos son datos. Sí, tenemos la página que tenemos arriba que Create New button up top that index flood para que podamos empezar personalizar esta página a lo que queremos. En lugar de ver índice arriba arriba, podemos decir contrata lista de autos. Eso es básicamente lo que tuvimos última vez cuando hacemos eso y vemos si lo vemos refrescarse y cambiar. Muy bien, entonces lo que no tenemos sería crear nuevo. No tenemos ningún dato y tampoco tenemos ninguna de las otras páginas. Cuando hacemos clic en Crear nuevo, solo va a recorrer porque no hay página para crear una nueva, volvemos, lo que vamos a hacer es crear un repositorio de GitHub para este proyecto. Y luego podemos seguir desarrollando nuestras características. 9. Añadir proyecto a GitHub: Muy bien chicos, Así que estamos de vuelta y lo que vamos a hacer en esta lección es sentarse o repositorio de GitHub para nuestros proyectos. No, GitHub, hemos pasado por esto. Es herramienta o plataforma muy, muy útil para guardar una copia de nuestro proyecto uno y mantener la historia de nuestro proyecto. También nos permite colaborar con nuestros compañeros o amigos en un proyecto muy fácilmente. Museo Studio, microsoft compró GitHub hace años y desde la integración entre las herramientas de Microsoft y GitHub, es decir visual Studio y ya viste Visual Studio Code. Esas integraciones realmente han madurado y se han vuelto muy, muy, muy poderosas. Entonces vamos a ver cómo podemos enviar toda la información de nuestro proyecto usando Visual Studio a GitHub y en mantenerlos sincronizados. Por lo que es realmente simple hacer eso. Lo que podemos hacer es simplemente mirar en la esquina inferior derecha de nuestro Visual Studio. Y veremos este botón que dice Agregar al control fuente. Para que siga adelante y haga clic en eso y verá obtener. Así que ponte a instalar en tu máquina automáticamente cuando se instaló Visual Studio, si no estaba ya instalado desde cuando hiciste este ejercicio usando Visual Studio Code. Pero no, dirán crear un repositorio Git y configurarán el repositorio local. Y luego también te permitirá crear el repositorio de GitHub fuera de la caja. Así que si no estás diciendo No siguió adelante e inicia sesión, probablemente te pedirán que ingreses con tus credenciales de GitHub este punto. Pero luego a partir de aquí, puedes indicar que quieres un repositorio privado y eso está bien por ahora. Puedes dejarlo como privado de realidad se dio cuenta que cuando desmarques esto a menos que arreglen comprador a granel, no, pero no lo crearía en GitHub si no lo hicieras privado, no enteramente seguro por qué, pero siempre se puede volver atrás y cambiarlo a público si así lo desea. Lo dejamos como privado. No tenemos que poner en una descripción ni nada más. Y nos están diciendo cuál será el tweet de URL. Para que puedas seguir adelante y hacer click, Crear y empujar y darle unos momentos. Y no conseguí ninguna abierta indica que estaba terminada. Pero si miro en la esquina inferior derecha, estoy viendo que el botón para decir add ya no está ahí en lugar de camino centímetro, me está diciendo que tengo una rama maestra. Va a ser lo que llamamos el control remoto. Recuerda, habíamos configurado ese remoto, que básicamente tiene ese enlace al repositorio remoto. Tiene cambios pendientes y compromiso que podrían estar en empujado saber en recursos. Verás que todos los archivos del hub null del Explorador de soluciones, pequeños candados, estos lotes de botones indican que la versión que está en tu máquina no ha cambiado desde la última actualización de la servidor. Entonces si entro y encuentro con algún ajuste y solo haré un ligero ajuste a este expediente. Entonces verás que se deshace de esta garrapata roja. Significa que sí, este archivo ha sido modificado y tenemos otro panel llamado buenos cambios. Si no es donde está en mi pantalla para ti, siempre puedes ir a View y verás buenos cambios. Muy bien, así que una vez que abras conseguir cambios, te mostrará los archivos que se cambien y esperando estar comprometidos. Por lo que tiene su mensaje de confirmación, por lo que sí dice archivo de índice modificado. Entonces la forma más fácil de hacer esto sería comprometerse todo y ver lo que esto hace es empujar y tirar. Enviará sobre tus cambios y pullover algún nuevo cambio que pueda haber ahí? No. Hay situaciones en las que podrías terminar en conflicto con tu colega, lo que significa que hiciste un cambio a esta página de índice. Él o ella también hizo un cambio a esta página de índice. Y luego uno de ustedes se registró antes que el otro. Entonces cuando estás revisando tu versión modificada de la anterior, GitHub se está dando cuenta de que la versión que tiene es diferente a la versión que te dio por última vez. Y entonces eso causaría un conflicto. En ese punto, tendrás que hacer alguna gestión y resolución de conflictos. Podemos discutir que más adelante a medida que crece un proyecto. Pero retinal esto, sólo manténgalo lo suficientemente simple para saber que podemos crear o repositorio para cambios sincronizar y cuando hagamos compromisos y verás que lo va a comprometer localmente y luego sincroniza los commits locales con un GitHub commits derribar automáticamente cualquier cosa que no tengas que esté actualmente en GitHub. Entrada real. Eso es lo fácil que es codificar como grupo. Así que cada uno de ustedes podría iniciar sesión fácilmente en este proyecto en GitHub. Te voy a mostrar a través de Colón Maya. Entonces aquí está el carbo King up que se acaba de crear hace un minuto. Ahí está el pollo que acabo de hacer archivo de índice modificado. ¿ Verdad? Nadie es privado y dos de ellos la única persona. Entonces si quería Bueno, mantenerlo en privado pero compártelo, entonces eso es tan fácil como ir a la configuración, entra en Administrar acceso. Podrían pedirte que confirmes quién eres. Y luego después de confirmar quién eres, entonces puedes invitar a colaboradores. Invitar a colaboradores es tan fácil como escribir nombre de la persona. Así que tengo otro, estoy tratando de defender mi otro YouTube, un cono para poder simplemente demostrar cómo se ve eso. Pero en realidad puedes simplemente buscar el nombre de usuario de ese arte de ráfaga. Solo estaba lidiando con nombres de usuario aleatorios. Simplemente puede encontrar el nombre de usuario de otra persona, seguir adelante y agregar. Y entonces aceptarían la invitación, y luego podrían también empujar y tirar del proyecto en orden, digamos a tirar del proyecto en orden, la nueva persona en el equipo, o incluso si perdiste tu código, veamos, tu máquina se estrelló. Necesito perder su proyecto local y necesitas recuperarlo de GitHub. El mismo trámite que alguien que se acaba de sumar al proyecto y necesitan una copia local para empezar a trabajar. Todo lo que realmente tienes que hacer es ir al código. Y luego se verá abierto con Visual Studio. Una vez que hagas eso, se abrirá Visual Studio en tu máquina. Entonces indica que puedes clonar desde el repositorio. Entonces esta es una ubicación de repositorio que es la URL para la orilla de GitHub. Este es tu pasado local. Ahora se está mostrando rojo porque ya tengo ese camino local. Ese es un proyecto en el que estamos trabajando. No. Así que una vez más, si fuera nuestra primera máquina, entonces no tendrías este problema. O si fuera la primera vez que estás recibiendo este proyecto, no tendrías ese problema con el camino. Incluso si ya tienes el proyecto, todo lo que tienes que hacer es cambiar tan rápido y tiraría a una carpeta diferente si realmente quisieras una copia. Después de que signifiques dónde querías clonar localmente, solo tienes que hacer clic en Clonar entre Visual Studio y GitHub. Todos los archivos de proyecto que se han subido hasta saber serán descargados a su máquina y sincronizados y luego podrás empezar a trabajar. Entonces así es lo fácil que es para los equipos empezar a colaborar. Si quieres hacer público todo el proyecto. Serrano es privado, es decir si esta URL y yo tratamos de crecer traje y simplemente abriré una nueva ventana de incógnito. Si traté de crecer traje, llegaré a un 404. Técnicamente no existe frente a uno de mis proyectos públicos. Déjame simplemente encontrar uno que yo sé que es público. Si fueras a obtener esa URL y navegar a través de ella, entonces mostraría que cualquiera puede navegar a repositorios públicos en GitHub. Pero una vez que es privado, nadie puede, cuando estás trabajando en tus serios predice los proyectos de creación de dinero, no quieren compartir tu propiedad intelectual con sharp, hacerla privada. Pero entonces en el verdadero significado de código abierto y colaboración y cizallamiento, entonces probablemente quieras tener algunos proyectos abiertos porque entonces eso también puede duplicarse como tu portafolio para tus pretendientes o tus futuros empleadores Cuando querían ver qué tipo de proyectos has hecho y simplemente hacerte una idea general de tus habilidades. En general, GitHub es una herramienta maravillosa para conocer gente nueva, ya sabes, mirando lo que otros desarrolladores podrían estar haciendo. Puedes seguir a la gente. La gente puede seguirte mientras publicas. La gente puede iniciar tus repositorios o hacer sus propias copias de tu código porque tal vez estás haciendo algo que alguien más está interesado en hacer y lo que estás haciendo está medio hecho, puede ayudarles. En el verdadero significado, una vez más, están saltando a la comunidad de código abierto para la colaboración. Eso es lo que GitHub trae a la mesa. Así que adelante y lo que vamos a hacer es hacer shorts o un cono. Entonces cada vez que consigamos una pieza de funcionalidad en, estaremos sincronizándonos con el repositorio porque una vez más, nos dará la historia de todo. Entonces si cometemos un error y algo deja de funcionar, siempre podemos retroceder a la versión anterior. Lo que no quieres hacer es dejar demasiados cambios entre las versiones que estás registrando. 10. Agrega crea una página de Create: Hola chicos, bienvenidos de vuelta. Entonces ahora que tenemos una idea de cómo podemos generar el código para ver los autos o cualquier detalle en cualquier tabla. Más o menos lo que podemos hacer es continuar por esta línea y pescar todas las actividades de la multitud. Así corroe una vez más ya que estamos creando, leyendo, actualizando, y eliminando. Por lo que en este momento tenemos una de las opciones rojas en forma del índice, pero no tenemos datos en la base de datos. Tenemos dos opciones. Podríamos entrar en la base de datos, poner en el registro, pero por supuesto, al darse cuenta o no estaría haciendo eso, no estaría alentando a nuestros usuarios a hacer eso. Entonces en cambio, lo que vamos a hacer es continente para pelear con todas las páginas. Y el siguiente es la página Crear la cual clínica los de la base de datos permite usar la interfaz de usuario en nuestros datos y luego tenerlo visible desde el índice. De la misma manera que generamos el archivo de índice. Sólo vamos a ir a hacer clic derecho en autos, añadir página Razor. Y voy a hacer otra página de resultados con Entity Framework. Ahora, una vez más, solo podías manchar todos estos, pero yo quería hacerlos uno por uno para que podamos evaluar los diferentes bits de código y sostener que todos se juntan para darnos la funcionalidad crud completa. Así página de Razor usando Entity Framework, fui a agregar ese. Y esta vez voy a hacer un Create. Estoy nombrando a la página crear. El modelo queda que lo crea nos dará un formulario o una clase de modelo será nuestro auto. Y podemos dejar el estrés del contexto de datos, seguir adelante y golpear Agregar. Y genera nuestras peleas esa página para mí. Entonces obtengo el fondo pitch así como el archivo de código que estamos acostumbrados a eso ahora, solo recuerda que si te dan algún error respecto y no poder andamiar, acabamos de pasar por esa actividad con el índice. Entonces entre las lecciones, es posible que te hayas inclinado a actualizar tus paquetes NuGet y luego eso probablemente provocaría alguna desconexión con una scuffle más antigua. Entonces si estás recibiendo ese error, simplemente retroceda a la versión anterior o una versión antes de la de tu nula en. Y vuelve a intentarlo. Y a medida que arrastra y si sigues consiguiendo el área, solo mantén en andamios pliegues o soltando la versión del paquete NuGet e intentando scuffled. Por lo que ahora evaluemos lo que obtuvimos a través de esta riña, la actividad para la página Crear. Tenemos nuestro código detrás de archivo, que siempre fueron una clase heredando, heredando del modelo Page. Y luego tenemos nuestros contextos siendo inyectados en. Entonces en conseguir, solo está diciendo devolver el pH. En otras palabras, no tenemos nada que necesitemos cargar necesariamente para el Create, así que no tenemos que ir y Fitch ningún dato para mostrar el formulario porque solo van a estar mostrando un forma vacía al usuario para que realmente creen un registro. Entonces el inicio está vacío, no hay nada que volver aquí, eso está bien. También tenemos esta propiedad llamada tarjetas. Entonces tenemos coche público y es un objeto del tipo auto, y luego tenemos comprando propiedad. Entonces la propiedad bancaria aquí básicamente le dice la página Razor que en el formulario, sea cual sea la entrada que se dé para cualquier propiedad que esté dentro de esta clase, debe verla. Una vez que se presente, entonces va a golpear ese puesto. Cualquier cosa que esté deshuesada, se va a observar para que cuando golpeemos el post realmente raspe todos esos datos, haciendo coincidir datos para las propiedades del automóvil desde el formulario. Y así podemos procesarlo en eso on post. Aquí primero verificamos si el modelo es válido. La validez del modelo puede ser una serie de cosas basadas en qué datos estamos pidiendo. Por lo que en el caso de crear un automóvil, sería absurdo a un bajo, un auto que se entrara sin un año y con nombre OTA. O al menos tal vez el nombre sea lo más importante. El oído podría ser opcional. Por lo que definitivamente querríamos asegurarnos de que al menos el nombre esté presente antes intentar enviar algo más de dos la pieza de datos. Para que si el estado de los modelos es válido aquí, básicamente ¿eso comprueba para que veamos cuáles son las reglas de validación? ¿ Son emiten si no, simplemente recargar la página. Te voy a mostrar en unos segundos. Sostenga que se traducirá a cada uno mostrando lo que le pasa. Pero si no es válido, simplemente recargue la página. De lo contrario, lo que sucederá es que irá al contexto de la base de datos, vaya al establo del auto y sumará el nuevo objeto de auto. Vean que esos son los mismos objetos que dijimos Ben propiedad cuatro. Y luego después de eso guardará los cambios. Entonces eso es todo funciona Entity Framework. Dice uno, diciéndome qué mesa y dime qué querías hacer. Entonces en este caso, queríamos sumar y queremos sumar un auto. Y luego una vez estamos incrementando los datos, es decir dónde agregar algo, eliminar algo, actualizar algo. Una vez que estamos cambiando algo sobre los datos, tenemos que llamar a guardar cambios. Ahora te darás cuenta de la espera. Cuando haga doble clic, espero, verás que hay este otro título llamado fregadero. Entonces en la programación asíncrona, vas a ver mucha de esa tarea asíncrona fuera del tipo en que realmente resulta. Observe que el inicio es sólo i resultado de oxígeno. Éste es resultados de acción de tarea porque es una función asíncrona. El motivo por el que es asíncrono es que está haciendo una llamada a la función asíncrona al contexto. Por lo que sí tiene una versión no asíncrona. Simplemente guarde los cambios. Pero entonces eso requeriría que hagamos algunos cambios en nuestro método y todas estas cosas. Pero si generó eso para ti, siempre va a intentar darte el código más eficiente basado en lo que sea capaz de hacer. Entonces es por eso que estamos obteniendo las versiones asíncronas de estos métodos después de que haya guardado los cambios y todo está bien, entonces redireccionamos al índice de página es incluso el código generado sabe que debería estar buscando una página llamada Index. Esa página de índice estaría aquí mismo en el mismo nivel que crear. Después de que todo esté hecho, solo redirigirá a la lista y verás tu recién creado un registro en esa lista. Ahora echemos un vistazo rápido al archivo HTML que se generó para nosotros. No es mucho, es un formulario pequeño porque la tabla no tiene tantos registros para lamentar que muchos campos para llenar. Lo que conseguimos, obtenemos uno, conseguimos el auto. Si en realidad pudiéramos simplemente rediseñado esencialmente crear coche. Esa es nuestra etiqueta H1, quita esa H cuatro. Y luego tenemos algunos divs Bootstrap. Tenemos un div con una clase llamada regla, y luego ahí tenemos una clase llamada llamada MD4. Entonces eso significa que está tomando cuatro columnas en la regla. En Bootstrap, el sistema grid es tal que puedes crear una regla y luego puedes tener col, dash un número lo que tienes hasta 12. Por lo que puedes tener tantos divs de llamada en lugar de una fila de hasta 12. Entonces podrías tener 12 unos o tres , cuatro o cuatro tres. Muy bien, puedes mezclar tanto y simplemente no elegir tener ninguno, correcto. Entonces si quería formar distrito justo al otro lado de eso lo que he visto desde la sección HTML de este curso cuando acabamos de crear el formulario, le dimos todas las etiquetas de formulario y así sucesivamente un estirado lo más ancho posible, entonces no tendría que especificar ningún col md. Para que puedas experimentar con eso. Mira la documentación para las diferentes mediciones de columna, y podemos experimentar con eso y ver cómo se ve eso. Pero lo más importante es nuestra forma. Entonces en la forma tenemos este div que dice AASB guión resumen de validación en solo modelo. También tiene otro modo que ve todo. Muy bien, Así que a veces tiendo a sólo cumplir con eso todo. A veces te encanta el modelo solamente. Eso está bien. Quiero decir, verás los beneficios de uno y no del otro, aunque es más global. Por lo que solo te recomendaría que uses todo cuando tengas dos. Entonces le damos una clase con tics peligro. Esta sección de la página realmente se llena con cualquier error de validación que estuviera presente cuando dijimos si el estado del modelo no es válido, devuelva el pH, por lo que eso es automático. Por lo que el estado modelo es en realidad camiones para ver, bueno, Este es el modelo entero y esto se está deshuesando. Cuando se ingresan datos y en Post, se va a camiones todos los datos que se ingresaron aquí a través del formulario. Verás que tienes dos entradas. Uno para mi auto dot año. No quiero poner nombre de punto para que consigamos la etiqueta, vamos a obtener la entrada, y luego obtenemos el spun con ese mensaje de validación siendo incorporado. Por lo que dos lugares, los mensajes de validación se mostrarán debajo la entrada y en la parte superior del pH en un resumen de gen. Siempre que se publica un cheques, ¿era válido? Si no, regresamos a la página cuando recarga esa página. Entre el resumen de validación y estos tramos de validación, veremos todos los textos que indicarán por qué algo no fue votado. Lo que voy a hacer es darle la vuelta a esto porque es nuestra granja. Se generó para nosotros lo que podemos cambiarlo propio. Entonces fui a poner este grupo de formularios por un nombre por encima del año. Esta cosa que fluye más. Es poner el nombre del auto y poner el año. Eso es opcional en este punto. Y luego tenemos el botón Crear debajo con la clase BTN será diez tablero primario. Y incluso se puede extender este sentido que btn bloque, se extiende a la derecha a través de toda la página. Entonces tenemos nuestra lista volver al botón Lista. Entonces si la persona llegó tan lejos e inicia, vale, ya no quiero crear el auto. Siempre pueden simplemente dar vuelta a la lista, volver al índice. Debajo de todo eso hay una sección para los guiones. Y lo que pasa es que todo este flujo de trabajo de validación que acabo de describir, es realmente una combinación de nosotros agregando reglas de validación y estoy a punto de mostrarte cómo funciona eso. Y algunos parciales o lo sentimos, son algunos guiones los que se renderizan en la página. Este bit de código, esto es renderizando async parcial para scripts de validación. Si miramos en la carpeta compartida, entonces verá que los scripts de validación de guiones de subrayado parciales exactos parciales. Ahí está. Y si miras en ese parcial, verás que todo lo que tiene dos etiquetas de script para jQuery dot validar. Entonces a las bibliotecas jQuery, que vimos en orden www roots. Sólo estoy tratando de mostrarte cómo todo está interconectado aquí. Tenemos el jQuery validar, cómo el jQuery validar en molesta. Entonces tenemos esos, acabamos de crear un parcial o el marco generó este parcial para nosotros que automáticamente tiene referencias a eso. En cualquier momento se generará un formulario para usted o incluso si crea su propio formulario. Más adelante, estaremos viendo cómo puedes crear tu propia granja desde cero o tu propia página, entonces en realidad puedes usar este bit de código para obtener ese tipo de flujo de trabajo de validación en todas las partes cuando queríamos decirle qué campos son válidos o lo sentimos, se debe validar y en contra qué reglas tenemos que pasar al modelo real que se está utilizando o a la entidad real. Poner estos atributos son anotaciones de datos es tan simple como ir por encima del campo al que desea que se aplique la regla. Y luego usando corchetes y luego veremos requeridos. Entonces esa es nuestra primera regla que está diciendo que en cualquier momento se supone que los datos se ingresan contra cualquier página que se modele fuera coche o cualquier forma modelada fuera de auto. El campo nombre es obligatorio. Ese es el paso número uno. ¿ Qué otras reglas podríamos tener? También podríamos querer decir que es longitud de cadena debe ser, y luego podemos ver una longitud máxima de tal vez 50. Por lo que ningún nombre del automóvil debe superar los 50. Déjame poner eso a 150. Y entonces podríamos decir que si no llega a superarse, queremos un mensaje de error de mi nombre. Es el nombre es demasiado largo. Algo que también podemos establecer una longitud mínima para que la persona no pueda entrar nada con un personaje, ya sabes, cosas así. Así que en realidad puedes simplemente ensancharlos a lo largo justo encima del campo. Ahora, poner estas reglas en contra de la entidad deudora, porque esta es la entidad real que se está utilizando para generar la tabla como vimos cuando agregamos un conjunto DB. Agregamos nuestra migración. Cuando los ponga aquí, en realidad voy a estar afectando la base de datos. Entonces si genero otra migración en este punto, y sólo voy a generar una. Hago reglas de validación, presiona Enter. Y cuando hagas eso, recuerda siempre cambiar el proyecto predeterminado al proyecto de datos. Pero una vez hecho eso, entonces se puede ver aquí que los bienes una columna de altar poco de sintaxis. Aquí está diciendo alterar la columna con el nombre, nombre porque esa es la que acabamos de establecer las reglas anteriores. Entonces el tipo sigue siendo, el tipo es int varchar 150. Entonces antes de que fuera en var char marks, tenga en cuenta que mientras que sentado como limitación de longitud de cadena, va a cambiar el tipo de datos en la base de datos para saber que incluso entonces no puede almacenar más de 150. ¿ Está bien? No, ya no es inaudible porque ahora lo hicimos requerido. Entonces antes de que fuera cierto, no era un azul. Podríamos haber levantado MTU. La base de datos no tendría ningún problema. La propia base de datos con rechazarla activamente. Si es nulo, entonces si no se proporciona nada, le dará una cadena en blanco como valor predeterminado, pero no puede ser nula. No obstante, por el lado del cliente, ni siquiera aceptaría la cadena en blanco porque se requiere. Entonces cuando vayamos a probar o formarnos en la página de índice, voy a golpear Crear Nuevo y luego tenemos nuestros formularios. Entonces por la llamada MD4, ves que sólo se está estirando hasta cuatro. Lo que podemos hacer, solo explora esto. Sólo voy a inspeccionar elementos que podemos jugar con este ancho. Si hiciera eso llamado MDA ocho por ejemplo, se estiraría a ocho veces. Entonces, ¿de dónde vemos el EHR? Líneas que se extienden de izquierda a derecha, eso es tan anchas como las 12 columnas. Entonces sé que va a estar tomando ocho de los 12. Si no especificara un ancho, entonces eso es lo que se vería. Sería una especie de diminuta. Entonces si quisiéramos que se extendiera completamente y entonces podríamos decir col md. Así que sólo voy a hacer eso aquí, es igual a llamadas. Entonces esta es una forma agradable y sin fisuras de probar cómo se vería antes de cumplir con el cambio de código. Así que en ninguna parte ver llamado llamado dashboards. Por lo que se puede decir col dash AMD, T12, lo que significa en una pantalla de tamaño mediano, T corp dot size. O si solo quieres que sea universal en cada pantalla y ocupe ese tamaño de modo o no mathspace, solo puedes decir que col dash T2 se llaman dash el número. Entonces aquí vemos que se está estirando en última instancia de izquierda a derecha en la medida de lo posible. Y luego tenemos nuestro botón Crear, que es btn block. Si acabo de tratar de crear este punto. Ahí vamos. Estamos viendo nuestra validación funcionando. Así que en ninguna parte obtenemos ese resumen de validación en la parte superior y luego estamos recibiendo los mensajes de validación a continuación. No, no le dijimos campo del año que se requería con base en nuestras reglas. Lo que voy a explicar por qué vas a ver esto. Entonces es bueno entender estos matices con todo el plato válido encendido y qué campos se validan automáticamente, por así decirlo. Porque el año es un entero y no un int anulable. Entonces por defecto, cuando ves int en C-Sharp, significa que nunca puede ser nulo. ¿ Está bien? Entonces nano significa vacío. Pero entonces un int nunca puede estar vacío. Un int siempre va a predeterminado a 0. Entonces eso significa cuando nos sometemos justamente ni intenté someter alguno, si es modesto es válido. No fue válido porque el entero no obtuvo un valor en absoluto. Ni siquiera consiguió el 0. En lo que se refiere, es inválido. Entonces si hubiera puesto un 0 ahí, el mensaje de validación desaparece. Si traté de crear, está satisfecho tanto como 0 no es un año válido para nosotros. Ceros un valor válido en comparación con null para un entero. Solo estoy tratando de explicar todos los diferentes tipos de datos podrían tener su propio tipo de validación en función de la retención. Trabajan en C-Sharp. Pero en última instancia, si no pongo nada ahí, va a decir automáticamente solo, bueno, se requiere. Si traté de crear, no irá más allá. Y si quieres más pruebas, solo voy a poner nuestros puntos de quiebre justo en esta línea donde comprueba, ¿es válido? Hacemos clic en Crear, va a golpear ese punto de ruptura. Bueno, no va a golpear el punto de ruptura saber debido a que la validación está observando activamente. Así que déjame seguir adelante y crear auto. Esto está en realidad en mi viejo auto. Hermoso GAR, adelante y pega Crear. Y como aún no hay errores de validación activos, lo que tenemos es esta comprobación para ver el estado del modelo es válida. Es válido. Esto está diciendo si no es válido, entonces volver a pagado. Entonces como es válido, va a seguir adelante y agregarlo a la base de datos. Sólo voy a quitar este punto de ruptura, golpear F5 para dejarlo continuar. Y luego hace eso redirigir a la página de índice, que luego ejecuta la consulta para ver y meterme todos los autos en la base de datos y mostrarlos. Así es como todo está interconectado. Entonces voy a tratar de hacer otro crear. Y sólo voy a poner este punto de ruptura, solo toma y ver qué está pasando. Vamos a hacer clic en Crear y verás que ni siquiera llega al punto de ruptura porque del lado del cliente se está negando activamente porque las reglas de validación en realidad están configuradas para el campos basados en las reglas que nos sentamos. Si resalta o inspeccionamos el cuadro de texto para el nombre, vemos aquí que tenemos datos Val es igual a true. Por lo que todos estos son generados por el JavaScript. Entonces entre nuestras reglas que configuramos en C-Sharp y las bibliotecas JavaScript en el cliente dijeron que todos estos atributos se agregaron al text-box. Entonces los datos Val es igual a verdadero significa que se supone que debo hacer validación de datos en este campo. Los datos de longitud. Eso significa que el error basado en la longitud, es el mensaje de error que habíamos escrito. El máximo es de 150. Entonces todas las pequeñas reglas que habíamos establecido, verás siendo aplicadas en los foros de atributos aquí. Y no teníamos este código extra. Y si miras hacia atrás nuestro archivo HTML, sigue siendo el mismo isquio. No lo escribimos y no ha modificado el propio archivo. Todo esto se está haciendo sobre la marcha cada vez que se cargará la página web. Que hemos hecho, todo el, lo que vamos a hacer es sólo actualizar la base de datos porque acaba de crear una nueva migración. Y eso es algo que vamos a estar haciendo mucho cada vez que hagas un cambio a una de las clases de entidad, una, haces una migración donde documentará qué cambio tiene que suceder. Y debes quitar la migración, qué engaña y hay que deshacer o cambia. Y luego después de hacer la migración, volvemos y decimos actualizar la base de datos. Por lo que en realidad puedes usar tab. Si escribe algunos de ustedes para hacer es presionar Tab para terminar el resto de la misma actualizar la base de datos. Y si todo va bien, ya verás hecho. Ahora, hay momentos en los que puede recibir errores. A lo mejor algunos de los cambios que quieres aplicar pueden entrar en conflicto con algunos de los datos que ya están ahí. A veces eso sucede, pero como dije, cada vez que surjan estos errores, vamos a trabajar a través de ellos juntos. Para que puedas tener una buena idea de cómo solucionar algo. ¿ Se debe subir? Cuando volvamos, seguiremos con nuestra aventura de código. Por lo que ahora tenemos el Crear, tenemos la r, Así que tenemos la c, tenemos la R en forma de esta página de índice. Y luego podemos hacer la edición a continuación. 11. Agrega una página de aviación: Muy bien, bienvenidos de vuelta chicos. Así que ahora estamos en nuestra nueva actividad, que es configurar la página de edición. Por lo que las ediciones serían la actualización bruta de la ONU. El tiempo que vamos a editar algo, básicamente estás haciendo actualizaciones a los datos existentes. Por lo que seguir por la misma vena de andamios se acertadamente autos, autos carpeta, seguir adelante y calentar. Hay una página, una página que utiliza Entity Framework. Y entonces éste lo llamaremos edit. Mi justificación para usar estos nombres de página. Por qué dije ediciones en lugar de actualizar o dije índice en lugar de lista. Notarás que en la página de índice, esos son los nombres de las páginas. Se espera ver que dicho, sin embargo, si esos no son los nombres de página que quieres, siempre puedes cambiarlos. Entonces si quisiera que esto dijera actualización en lugar de editar, entonces eso estará bien. Voy a llamarlo actualizaciones. Fui a cambiar esta plantilla de Create para editar así obtenemos ese formulario de edición y verás la diferencia entre las plantillas de crear y editar. La clase modal sigue siendo coche, contexto de datos significa el mismo anuncio. Entonces obtenemos nuestras dos quintas partes. Por lo que obtenemos actualizaciones, CSEA, esmalte, y el archivo de modelo detrás de él, nieve, esto es actualización. Pero si vuelvo a la página de índice, el código que se generó está buscando la página ASP va a querer ver es editar y no actualizar. Así que está bien, bien. Simplemente puedo hacerlo nulo Cada mirada adelante para actualizar la página. También puedo cambiar el texto si quiero, porque esto es sólo una etiqueta de anclaje. ¿ Qué se necesita que quiera que se muestre? Puedo decir que quiero mostrar actualización, pero la dejaré en editar porque la actualización no es tan amigable con el usuario o los usuarios realmente no se relacionan con la actualización de palabras como lo iban a editar. Lo que usted presenta a los usuarios. Siempre importante. Pero puedes tener un poco de libertad con tus nombres de tono. Pero eso es todo lo que quería demostrar por no ediciones de Nimitz, poner nombrarlo, actualizar. Quieres tener cuidado si vas en contra de la norma, entonces tienes que cumplir cada vez más para facilitar tu implementación. No obstante, de lo contrario, si vas con las normas, tu necesidad de personalización se reduce en gran medida. Volvamos a nuestro archivo de código para la actualización del archivo CSS HTML. Entonces es más o menos lo mismo uno donde inyectar también el contexto de la base de datos, tenemos el mismo tipo de propiedad de banda, propiedad que vimos en el Create. Entonces vamos a tener el primero. Vamos a tener campos para el auto en el foro. Necesitábamos estar atentos a los cambios a los valores de la propiedad para que podamos procesarlos en post. Aviso, sin embargo, que están en GitHub tiene mucha más acción pasando, entonces nos habremos acostumbrado, y vamos a caminar a través de lo que está pasando aquí. Uno, notarías que esto es asíncrono, por lo que lo hicieron acrecentar esta vez, y tiene un parámetro para int id Ahora nota que este int tiene un signo de interrogación al lado de él. Por lo que anteriormente habría mencionado ins neoliberales versus int. Entonces int significa que no es opcional, tiene que ser al menos 0. No obstante, hay momentos en que es posible que necesite un valor nulo en la variable que se supone que es un int. En esta situación, básicamente están diciendo que alguien puede intentar navegar por la página de actualización sin proporcionar un ID. Muy bien, entonces eso significa que cuando llegue aquí, ese valor de ID sería nulo. Lo primero que hace es comprobar si el valor id es nulo, luego volver no encontrado porque no puedo encontrar nada. No significa nada. Y si me estás diciendo que quieres editar un registro sin nada como su ID. Y ya pasamos por hold que ID es ese identificador único en la base de datos? Es una clave primaria. Eso es lo que es el ID. Si me dices que quieres editar un ícono de registro, acude a la idea del registro que te voy a decir si no es teléfono y no lo encuentro bien. Así que cada vez que obtenemos esas 404 páginas en cualquier sitio web, básicamente lo que esto es todo lo que están haciendo, están regresando, no telefoneados. Muy bien. Si no se proporciona ninguna identificación, entonces no puedo encontrar nada. Eso es más o menos lo que estamos viendo al usuario. No obstante, si va más allá de esto, entonces podemos suponer que el ID tiene un valor. Por lo que tratamos de encontrar ese valor en la base de datos. Esto es básicamente decir, ir al contexto, ir al establo del auto. Así que ve a luego disculparse, ve al establo del auto y consígueme el primer registro o por defecto donde el ID coincide con el valor que está entrando. Esto es lo que llamamos expresión lambda. Muy bien, así que pongas demasiado. M podría haber sido cualquier Tolkien, esta podría haber sido la palabra registro igual w, q igual W2 palabra cachorro. M no lo es, no es nada manifiestamente especial. No obstante, m seguido de esta flecha, que solo voy a llamar la flecha Lambda, convierte en una expresión lambda, lo que significa que básicamente estás definiendo función como capacidades dentro de uno declaración. Muy bien, Así que esa es una expresión lambda. Entonces podría haber usado un elixir degenerado m, eso está bien. Pero podría haber usado cualquier letra, cualquier palabra, cualquier Tolkien y dicho flecha Tolkien. Entonces el Tolkien básicamente representa cada registro en la base de datos. Entonces en lugar de que yo tener que usar como un for-loop, porque ya establecimos no autos es como una lista de tarjetas o la lista de registros en la base de datos. Ya miramos cómo tendríamos que usar for-loops o para cada bucles para pasar por lo menos para conseguir todos los registros en lugar de decir que me traigan los autos. Y luego para cada tarjeta que está en la base de datos, si el ID coincide, básicamente esto está haciendo toda esa lógica que acabo de describir para nosotros. Entonces el Tolkien aquí representa cualquier registro en la base de datos. Obtenemos las propiedades para que pueda decir m dot m dot nombre, m dot año. Entonces, si necesitaba buscar algo, podría usar esta expresión lambda para buscar por nombre por oído. En este caso, estamos buscando por ID. El ID que mucho es el valor que se está pasando a través del intento de navegación del usuario a esta página. Puedo ver si el auto es no porque tal vez pasaron en ID TIN y no hay auto con una identificación diez, eso significa que nada habría sido volado a la base de datos. Entonces estamos diciendo que si no se encontró nada, entonces devolvemos la página. Hay formas en que puedas refactorizar esto, pero puedo explicar por qué fue escrito así y por qué probablemente querría refactoriarlo ganado. Fue escrito así porque una base de datos llamada es cara. Me gusta pensar en ellos como algo caro. Lo haces cuando sea necesario en absoluto. Quiero simplemente hacerlo fuera de la pero sólo porque más o menos lo que están diciendo es que si no se proporcionó nada, no espere. Llamó a una base de datos, verifica si se proporcionó algo y si no, entonces mátalo ahí mismo. La persona está perdiendo tiempo y recursos. Mátalo ahí mismo. No desperdicies la llamada de base de datos. Después de que hacemos la llamada de la base de datos, todavía queríamos saber ¿se llamaba ese respecto? Si no se encuentra, entonces regresamos no encontrado 404. De lo contrario devolvemos el pH con los datos cargados online con un crear donde el Create solo tenía el vacío o simplemente la instanciación del auto. Entonces no había nada en la tarjeta, esto estaba vacío. Por eso obtenemos la forma vacía. Porque el nombre del punto del coche estaría vacío. Coche dot año estaría vacío. Depende de nosotros llenarlo y se llenaría e ingresaría en la base de datos por correo. No obstante, en las actualizaciones estaban tratando llenar esto con datos antes de volver a la pizza, recuerda dije que quieres poner todo dentro de las propiedades antes de enviarlo al real apareció antes de disputar a los usuarios. Así que al igual que con el índice, estamos en conseguir. Seguimos adelante y corrimos la consulta. Entonces recuerda que esto se estaba utilizando, esto se está utilizando en la propia página, modelo dot cars. A diferencia del índice donde no estamos, lo siento, igual que con el índice donde llenamos las tarjetas con datos antes de volver página. Tenemos que hacer eso para la actualización. Por lo que necesitamos encontrar el registro y luego devolver la página. Y luego enlazaría automáticamente los valores existentes provenientes de la herramienta de base de datos, los campos de entrada en el formulario generado, que son capaces de mirar en unos segundos. Entonces es por eso que realmente fue escrito así. Si no hay identificación proporcionada, no desperdicies la base de datos, llame, muerte de ejecución. De lo contrario, intenta encontrarlo. Y si no lo encuentras, mata la ejecución, lo contrario, sigue adelante y muestra la página. No, esto podría refactorizarse para tener una declaración if porque estas dos declaraciones if mientras están comprobando dos escenarios diferentes, realmente están haciendo lo mismo. Si queríamos una respuesta diferente a cualquiera de ellas y tenemos dos líneas de código para cambiar. El factor preguntándose podría ser que, vale, arriesgamos la llamada a la base de datos. Lo intentamos para encontrar el auto sin importar, no obtenemos el valor. Muy bien, entonces sólo podría decir si el auto es nulo, porque al final del día, si se pasa nulo teoría sólo va a ver si el ID es equivalente a nulo, lo que nunca sucedería. Entonces auto sería nulo, volvemos no encontrado. O si ese valor es 0 o algún ID que no existe, Kyra todavía va a ser nulo, devolver, no telefoneado. Ya ves, solo te estoy mostrando que el código generado, pero no tengas miedo de explorarlo y modificarlo, como puedes pensar que podría ser más eficiente. Pero les estoy dando los dos escenarios y explicando por qué se estableció un escenario de esa manera. ¿ Y cuáles son los pros y los contras de ella? Ahora que tenemos una idea de lo que está haciendo el inicio y no voy a modificar esto. Lo dejaré tal y como está. No, podemos ver lo que tiene la página HTML para mostrarnos. Entonces la página HTML va a parecer bastante idéntica o crear. En este punto, No, estás viendo bien hay dos los dos mismos foros literalmente ahí para verle formas. La diferencia aquí sería esa forma degenerada aquí. Dice auto de actualización y fui a cambiar esto para editar auto. Saca cualquier cosa que no necesite. El botón por defecto se guarda en forma decretada. Se dijo crear. Muy bien, y luego podemos una vez más solo tomar btn block y ponerlo por aquí. Además, si no quisiéramos la clase para ella llamada MD4, podríamos cumplir con eso llamado MD, sea lo que sea. Solo te estoy mostrando que los dos formularios son generalmente idénticos entre un formulario de creación y una actualización en la mayoría de las aplicaciones web, generalmente son idénticas. En este punto, podrías tomar otra decisión de diseño. Podrías hacer una página que diga tal vez upsert, actualizar e inserciones que apoyen mental emerjan hacia la actualización e inserción. Y lo llaman absurdo. Este absurdo Pij sería más o menos en el, ETC. ¿ Recibí una identificación en Get ¿Me dieron una identificación? Si me dieron una identificación, traté de encontrar el auto y luego volver a pitch. De lo contrario, solo cargue la página vacía. De esa manera, si se presentan datos aparecerán. Si los datos no se presentan en la orilla hacia arriba. Y entonces podría hacer otra declaración if aquí para ver si el ID está presente en shore un valor en el botón o mostrar el otro botón llamado éste es un botón de actualización. Yo querría que fuera btn-primaria, me gustaría que fuera T sea btn peligro. Entonces es naranja. Solo te estoy mostrando, solo, solo estoy explicando diferentes consideraciones de diseño. Todo el mundo tiene diferentes contextos. Y así podría hacer algo que tú estás viendo, ya sea que no sea necesario hacerlo de esa manera. O podrías hacer algo con un colega o un amigo tuyo y ves que no necesitas hacerlo de esa manera. Pero los contextos siempre deben ser el factor determinante para sus decisiones a la hora de desarrollar una aplicación. Continuemos. No voy a hacer esas cosas absurdas, solo te voy a dar una idea. Pero el punto es que las formas son casi idénticas. aplicarían las mismas reglas de validación. El buck a listar está ahí, tenemos el botón, tenemos nuestros campos de entrada. Sólo voy a reorganizar este. Por lo que se parece al Create en términos del orden de los campos. Pero hay una cosa que quería señalar y que es esta entrada para lo oculto sí cambió esto a todos en el último. Por lo oculto. Si vuelves a nuestro Create, no hay oculto. Para una identificación. Este campo oculto es absolutamente importante. Uno, es un oculto porque nuestros usuarios realmente no necesitan conocer nuestras claves primarias. Piénsalo. En Amazon, es posible que vea nuestro número de producto, pero ese número rara vez es nunca. La llave paria María. Es posible que veas un número ISBN para un libro o algo así. Ya sabes, un número de identificación para nuestros alumnos. Pero esa rara vez es la clave parietal. La clave primaria es interna al sistema. No obstante, es absolutamente necesario para el transporte por carretera. Qué pasa, porque si no tenemos que esa clave primaria sea cargada en este formulario, entonces siempre va a suponer que se trata de un nuevo récord. Muy bien, así que tenemos que por eso creo no lo tiene porque siempre es siempre es un nuevo récord. No hay identificación cuando estás creando algo. No obstante, cuando estás editando o actualizando todo lo que pasamos por los ungulados, es obvio que el ID es muy importante. Y tenemos que recordar el DNI a través del formulario. Para que cuando esta persona somete la fórmula, pegamos la cabeza de nuevo al on post, ¿ves mucho más repentinamente a bordo? Sí, hemos validado. Ya pasamos por cómo se ve la validación , eso está bien. Pero entonces aquí donde decimos contextos dot coche adjunto y cambia de estado a modificado. Lo que realmente está pasando aquí es que estamos viendo base de datos. Por favor empiece a llevar por carretera este auto objeto. Por lo que habríamos conseguido aquí el disco original del coche. Si el nombre era un calabacín al deporte. Eso es lo que tenemos aquí. El año fue 2013, Eso es lo que conseguimos. El DNI fue de tres. No, no escuches después de que se haya editado, la idea nunca debe ser editada porque diferente IID significa que es un disco diferente. Entonces por eso está oculto y no permitimos el usuario lo vea o interrumpa con él, pero está siendo transportado por camión en segundo plano. Ahora si lo cambié de Suzuki. En los deportes y en como, oh, no era un deporte. Déjame quitarme el deporte. Entonces lo que estamos viendo es base de datos. Por favor empiece a ver este registro y sepa que está modificado. En la base de datos sabrá que está modificada o Entity Framework sabrá que está modificada u otra por el ID. Entonces va a suponer que algo en él cambia. Lo único que no debe cambiar es el ID porque ID está presente, lo sabrá. Ok. Tengo constancia con esa identificación, ¿verdad? No. Entonces lo que haré es guardar los cambios que se han hecho a ese registro con ese ID. En esencia, va a terminar con dos versiones. Va a tener el registro original que acabamos de recuperar. Y entonces va a tener este nuevo disco o esta nueva versión del disco COVID, pero propiedades potencialmente diferentes. Y luego Guardar Cambios, diremos, está bien, voy a guardar los nuevos datos en la tabla en consecuencia. Esto, en éste, verás que tenemos un try-catch porque esto es situación más delicada. Es decir, ¿y si dos personas trataran de actualizar el auto? Hice clic en editar este auto. Segundos antes de hacer clic editar este auto, ambos tenemos este registro de acero o al menos quién ambos de la corriente requerida entonces hago un cambio. Lo cambié del año 2013 a 2015 y luego haré clic en Guardar. Pasarás bajo el más largo bajo registro y todo tu registro es de acero porque tenías la versión del registro antes de que yo lo actualizara. Al hacer clic en Actualizar, vas a intentar guardar los cambios. Gané algo que ya estaba actualizado desde que lo hizo clic. Eso llevaría a este tipo de error o no sabía sobre intentar y atrapar o manejar excepciones, explotar C-sharp, lo que estamos haciendo es tratar de guardar los cambios, pero entonces es sólo esbozar explícitamente esta excepción de concurrencia de actualización de DB, que es ese mismo escenario que acabo de mencionar. Necesitan ver eso, bueno, si el auto no existe, entonces devolver no teléfono porque tal vez fue borrado para cuando estoy tratando de actualizarlo. Si no piensa desde entonces, devolver no teléfono, de lo contrario, solo lanza una excepción y error más Griswold formas de manejar esto, pero eso es lo que dice el código que se generó nosotros. Entonces eso no es problema. No obstante, si el juicio fue exitoso, no hubo nada atrapado, entonces devolvemos el discurso índice. No, esto es solo un auto método existe que básicamente simplemente devuelve verdadero o falso. Base de datos comprobar el auto estable si hay algún registro. Y aquí hay otra expresión lambda. Y sólo para mostrarte que los tolkien realmente no importa arriba arriba es la misma expresión lambda, pero usamos m aquí abajo. Es la misma expresión lambda que solo usa E. Si querías volver a compararlos, solo copia esto y ponerlo cerca de eso. Miré el hecho de que son el mismo código, sólo dos diferentes lambda Tolkien. Básicamente es sólo decir: ¿Hay algún auto en la base de datos que tenga ese DNI? En caso afirmativo, entonces bien. Si no, entonces regresa. No llamó por teléfono. Entonces si existe, eso significa que los datos siguen siendo que estoy tratando de cambiar. Entonces arroja una excepción, o podríamos simplemente enviar error de botón diciendo Hey, algo salió mal. Probablemente quieras volver a intentar esa operación. Muy bien, veamos cómo funciona esta operación de actualización. Así que sólo voy a seguir adelante y saltar adentro. Muy bien, así que no, veamos cómo funciona esta funcionalidad de actualización. Cuando hago clic en Editar. Observe que va a traer los datos. Eso no debió haber sido un botón rojo, eso debió haber sido btn advertencia, no ser diez Dash peligro. Permítanme solo hacer ese cambio. No hay advertencia para un botón naranja. Después de hacer ese cambio, sólo puedo refrescar. Y ahí vamos. No, es un botón naranja. Entonces veamos cómo se ve esta operación de edición. Aviso en la URL que ves autos slash update, luego las cadenas de consulta. Así que recuerda cuando hablamos de cadena de consulta llamada datos se transmite a través de formularios. Entonces cuando usamos un GET, entonces estamos no especificamos que realmente va a poner todos los datos y cadenas de consulta que puedan ser peligrosas. Y mientras estamos trabajando en un sitio web estático sin nada particularmente peligroso que se transmita desde nuestro formulario a cualquier lugar, estuvo bien. obstante, no notarías que generan explícitamente formularios con método es igual a post, porque cuando publicas los datos o cuando envías el formulario, no quieres estar enviando datos a través de la cadena de consulta. Especialmente como cuando se trata de tarjeta de crédito o información personal de los usuarios. Sigue volando ese nombre de usuario y contraseña. No quieres eso en la cadena de consulta que hablo. Si bien es inofensivo usar la cadena de consulta para el ID, puede que no sea inofensivo cuando estés enviando desde el formulario. Entonces es por eso que siempre queremos asegurarnos de que nuestras formas, nuestro método igual a publicar. No obstante, hagamos un poco de experimentación aquí. Así que estamos hablando de ambos el agujero se pone bien. Entonces cuando navegemos para indexar con el ID, solo voy a volver a poner aquí un punto de interrupción. Sólo voy a refrescarlo cuando llegue al punto de ruptura. Y pasamos el puntero sobre la propiedad ID, se ve que se pasa esa identificación. Entonces eso es lo que abrió. Obtenemos ese ID que viene a través de la cadena de consulta. Y entonces somos capaces de determinar, está bien, Esos autos de punto existen en nuestro sistema. Ahora mira lo que pasa cuando cambio este ID a uno que no existe. Sólo tengo un auto en mi identificación del sistema. No hay auto con el ID TIN. Si traté de bros ahí, me dan diez. Muy bien. Y entonces si acabo de hacer F5 y continuar, entonces verías que solo está diciendo que no se puede llamar HTTP o fluoróforo. Entonces esto es lo que obtenemos en virtud de llamamos retorno, no telefoneado. Muy bien, por lo que eso es básicamente sostén, eso funciona. Ahora nota una vez más que se trata de un método on post. El método on post es lo que va a funcionar con el formulario que está enviando con el método es igual a post. Muy bien, así que déjame volver a lo grabado que tenemos Hagamos logrado. Por lo que el año fue 2215, no 2013. Eso está bien. Fui a salvar y luego mirar eso. 2015. Recuerda que esto se está cargando desde la base de datos cada vez que golpeas el índice, está consultando la base de datos. Lo que veas aquí es el estado actual del registro que está en pocas palabras. Obra de actualización completa. No importa cuán complicado pueda verse un sistema, cuán sofisticados sean los botones y animaciones y así sucesivamente. Lo que estamos haciendo aquí está en la raíz de cada sistema, el sitio web con el que interactúas, todo lo que están haciendo es permitirte poner datos en la base de datos a través de la reforma, modificado a través de un formulario. Míralo a través de una página de índice o una página de detalles que vamos a mirar en unos pocos o eliminada. Eventualmente. Eso es todo lo que realmente está sucediendo, sin importar el sistema que esté mirando. Cuando volvamos, veremos implementación o eliminación de funcionalidad. 12. Añadir detalles Página de maquinilla: Muy bien, así que estamos de vuelta. Y sé que en la lección anterior dije que trabajaríamos en el Delete, pero tengo una sorpresa para el Delete, vamos a hacer las cosas un poco diferente para el Eliminar. En cambio, trabajemos en nuestro discurso de detalles. Muy bien, vamos a saltar a nuestro código. Y creo que a estas alturas conocemos al Drew. Vamos a pelear o velocidad de detalle. Así que haz clic con el botón derecho en la carpeta de autos, agrega página Razor usando Entity Framework, estamos llamando a este detalles Y la plantilla sería la plantilla para detalles. Entonces nuestro modelo es auto y todo lo demás queda. Y obtenemos nuestra página para los detalles con su archivo de código correspondiente. Conocer la página de detalles es más o menos sólo otra página que nos ayuda a conducir a la r de corroer que se lee. En este punto, podría ser algo difícil ver la relevancia de la página de detalles. Porque lo que realmente te muestra la página de detalles son los detalles de algo, mientras que el índice realmente muestra la falta de una vista previa. Entonces si tal vez nuestra mesa tuviera 20 o 50 campos diferentes, tal vez incluso diez campos, no querrías todos los de la lista. Pensable como un costo, una lista de clientes, o incluso en Amazon. Cuando estás mirando los productos en Amazon, no te están mostrando cada cosa sobre la proteína. Te están mostrando el nombre, su precio, tal vez cuánto tardaría en enviar. Pero entonces en el momento en que haces clic en ese producto, entonces ves todo lo que construyo un prototipo, ves todos los tamaños y colores potenciales y de dónde es y qué material lo hace, etcétera Así que eso es realmente para qué está diseñada la página de detalles. En este caso, es discutible que es opcional porque auto realmente cuando tiene dos detalles para mostrar en cualquier punto cuáles son el oído y el nombre. Bueno, una vez más, si fuera una mesa más grande con más detalles para mostrar, entonces no querrías enumerarlos todos en el índice en ese momento. Probablemente no querrías mostrarme ser el año del auto o el nombre del auto. Entonces digamos que no queríamos mostrar el año. Sólo voy a comentar esto. Entonces cuando miras la página de índice, solo estás viendo el nombre del auto. No obstante, se quiere ver el resto de los detalles sobre el auto. Haz click en la página de detalles donde tienen el enlace aquí y luego sabes que hemos creado la página, la tenemos cableada. Por lo que va a ir a esta página de detalles detalles que CSS HTML. Simplemente modificaré esto para decir detalles del auto. Deshazte de que cada Doug, hay una forma antigua porque una vez más, solo es leer datos, datos como un enlace generado automáticamente para ir a Editar. Entonces aquí hay otra cosa. Está buscando, editar fuera de la caja. Utilizamos la actualización del nombre de página. Entonces tengo que asegurarme de cambiar eso. Entonces podemos volver a la lista si así lo deseamos. De acuerdo, entonces, ¿qué está haciendo realmente la página de detalles o el archivo de código? Cuenta con auto predial, no tiene cláusula de propiedad de Bend. No hay presente extranjero, pero sí tiene la propiedad. Y luego hace lo mismo donde dice Consígueme el registro con el yodo está buscando esa identificación. Si es nulo, volver no telefoneado. No es nulo, entonces trata de encontrar el registro. Si puedes encontrar el registro, No es teléfono, devuelve la página. Entonces esta es una especie del mismo código que vimos generado para la, para la página de edición. Muy bien, no voy a hacer las modificaciones aquí. Estos tienen tanto a comparación del regular fuera de la caja anotado frente a nuestra pequeña modificación donde acabamos de hacer una llamada a base de datos y determinar si no se encuentra. Para que puedas compararlos, pero sigamos adelante y corremos. Así que sólo voy a Control F5 que podamos ver lo nos trae el pH de los detalles de nuestra página de índice. Si pego detalles, entonces voy a ver los detalles de la tarjeta y me va a dar todos los detalles. Por lo que una vez más, esto se genera. Puedes modificar el aspecto y la sensación de la misma como necesites. Desde aquí puedo hacer clic en él. Y debido a que modificé el enlace, no estoy teniendo problema saltando a la página de edición. Puedo volver a la lista. Una vez más, toda la navegación está estrechamente acoplada aquí porque cada enlace sabe dónde encontrar. Eso es muy, muy importante desde cualquier pH, deberías poder navegar a otra página. O el pH nulo debe ser de más de dos o tres clics en función del tamaño de un sitio web. Pero generalmente hay una política de gira de tres clics a la hora de navegar entre páginas. Eso es realmente todo por los detalles, Niza y sencillo, comparado con todo lo que hemos pasado con el crear y editar para ver que los detalles son realmente sólo cargar en el registro y mostrarnos. Se puede modificar lo que se muestra en el índice. Una vez más, si no quieres que todos los datos en la página de índice, por eso tenemos la página de detalles para mostrar lo que no se mostraba en la lista. Cuando volvamos, vamos a mirar usando algún jQuery con nuestro delete. Porque con nuestro delete, no voy a crear toda la página para el delete. Tienes dos formas de mirarlo y exploraremos las opciones cuando volvamos. 13. Añade la página de eliminación de Razor: Chicos, bienvenidos de vuelta. Vamos a estar mirando trabajar con nuestra eliminación operativa. Empecé a mencionar que generalmente hay dos modelos que gobiernan mantener la eliminación ocurre. Uno, se puede establecer el pitch he hold lead, que en realidad es igual a un discurso detallado, pero también se dobla como página de confirmación porque quieres permitir que el usuario vea el registro que son capaces de eliminar y luego pregúntelos, ¿ Estás seguro que quieres eliminar? Echemos un vistazo a ese 1 primero. Eso sigue el mismo patrón que hemos estado siguiendo. Adelante y agrega una nueva página Razor usando Entity Framework. Llamaré a este eliminar. De la plantilla. Yo sólo elijo las necesidades o el mismo modelo. Entonces obtenemos nuestra página generada para eliminar con su archivo de código. Por lo que una vez más, inyectando el contexto DB, también tenemos un botón apropiadamente para el auto. Por lo que aquí va a ocurrir alguna forma de forma o recolección de datos. En Git, tenemos el mismo tipo de lógica que acabamos de ver con la edición. En la página de detalles donde obtenemos el ID, asegúrate de que no sea nulo, obtienes el registro y devuelvo a pH si grabo fue encontrado. Pero luego en el post, también va a verificar que el ID no esté vacío. Por lo que ten en cuenta que está buscando sólo el ID en Post. Es muy posible simplemente tomar un parámetro que corresponda con los datos que se encuentran en la página. Así que permítanme simplemente correr el paralelo aquí. Con nuestra operación de actualización. Dijimos comprando propiedad en todo el auto. Aviso que no hay parámetros en el OnPause. Eso se debe a que todo el objeto automovilístico tenía campos presentes en el formulario. Entonces teníamos una identificación, teníamos el nombre, teníamos el año. Entonces cuando hacemos clic en Guardar, realidad serializaría todos esos puntos de datos que se ingresaron y los colocaría dentro de los autos. Entonces es por eso que enlazo propiedades, básicamente cargando qué datos entraron al objeto, entonces podemos operar en él. Conociendo el caso de un delete, realmente no necesito saber el nombre y el año. Realmente solo necesito saber cuál es el ID del registro que hay que eliminar. Entonces puedo especificar en el onPause que solo estoy buscando el ID. Una vez más, puedo hacer todos los cheques. Comprueba si es nulo. Quiero decir, si estoy tratando de eliminar nada, entonces devolver no carpeta, pero de lo contrario intente encontrar el registro del auto que necesita ser eliminado. Entonces esta vez solo vamos a usar este hallazgo asíncrono. Entonces es algo diferente de los valores predeterminados de primer orden porque la multa estos Sing utiliza los valores clave para que pueda dispersarme en Id a diferencia los primeros o predeterminados que requieren una condición o esta expresión lambda, donde esto es cierto, entonces conseguimos un auto, mientras que el hallazgo, va a ver ir a la mesa y encontrar un registro con ese ID para la clave primaria, que por supuesto todavía se encuentra con el riesgo de que sea no. Entonces tratamos de encontrar el auto. Sería ese ID si el auto no es igual a no, entonces procedemos a retirar la base de datos del automóvil, conseguir la mesa de autos, y quitamos este registro. Por lo que tenemos que encontrar el registro. Después quitamos el registro. Una vez más, estamos incrementando datos por lo que guardamos los cambios. Después de todo eso, volvemos al índice. Por lo que aunque Kiara estuviera modo en este caso, no vamos a devolver ninguna no telefonada. Sólo vamos a redirigir a índice va. A lo mejor estás tratando de eliminar algo que importaba el tiempo que haces clic en el plomo, alguien más, lo necesitaban, sin daño, sin falta, solo regresas al índice. Una vez más, esto se acaba de generar código. Si quieres hacer algo diferente en tus escenarios, siéntete libre de modificarlo como necesites. Este escenario funciona bien porque cuando pasamos al Delete, vemos uno. Se ve igual a los detalles. Este es el mismo código que estaba en la página de detalles. No obstante, tenemos un mensaje. ¿ Estás seguro de que quieres eliminar esto? Simplemente voy a hacer lo que siempre hacemos aquí donde veo los mejores cambios están golpeando borrar auto. ¿ Estás seguro de que quieres eliminar esto? Mostramos los detalles del auto, pero mira el formulario. Esta vez tenemos una forma de todo lo que está en esta forma. Bueno, sí, es post método, pero todo lo que tiene es el oculto para la identificación del coche. Eso es análisis básico P4. El Yo Am Voy a atarme a esa propiedad. Por lo que habría visto este formulario ESP, el Crear, ver cualquier cosa las actualizaciones, vinculante a esta propiedad coche dot ID. Pero entonces el nombre del inmueble será ID. Y luego en el Delete, eso realmente solo lo vinculará al ID del parámetro. Entonces así es como sé que solo estoy obteniendo el DNI de este envío de formulario. Así que aquí estamos viendo es un botón de enviar con el delete válido y es un peligro de guión BTN, lo cual tiene sentido. Si cambias de opinión, siempre puedes volver a la lista. Muy bien, echemos un vistazo a lo que obtenemos con el delete. De la lista voy a hacer click para eliminar. Se va a cargar mi registro, eliminar autos, por lo que quieres eliminar esto. Y así en los detalles del registro, podemos optar por eliminar o podemos optar por volver a la lista. Entonces si hago clic en Eliminar, entonces vuelve a la lista y ya no hay un coche en mi base de datos o al menos las leyes de base de datos. Una carta menos y tenía antes de hacer esa operación. Sólo voy a crear recrear el auto rápidamente. Suzuki Swift sport. Y fue un 2013 haría y crear. Muy bien, entonces tenemos nuestro registro de nuevo y puedes hacer esto por tantos registros como necesites. Entonces esa es la opción uno. Te gustaría permitir que el usuario revise el registro y pregunte, ¿ Estás seguro de que no pudieron eliminar y confirmas? Sepa qué pasa si no quisiera introducir otra página completa solo para la operación de eliminación. ¿ Y si quisiera eso aquí mismo? Cuando la persona hace clic en eliminar, les pedí pop up tal vez. ¿ Estás seguro de que quieres eliminar? Haga clic en sí, y luego ocurre la eliminación. Probemos algo que nadie método de implementación de esto sería envolver cada enlace de eliminación en un formulario y convertirlo en un botón de envío en lugar de solo una URL a la Delete. Sí, tenemos la página, pero volvamos a nuestro índice y tipo de modificación o lo que está pasando aquí. Podría decir forma aquí mismo. Déjame hacer bien mi ortografía. En esta forma, vamos a tener botón. Este botón básicamente va a ver lo mismo que ve el botón actual no comía. No quiero que necesariamente se vea como un botón. Quiero decir, supongo que en este momento probablemente podamos empezar a ser creativos con nuestros enlaces también. Entonces no hay problema. Sólo diré que la clase es igual a vt n dash. Eso es editar. Por lo que probablemente querré que sea como una advertencia. Eso es todo. Es botón. Por supuesto cualquier botón necesita ser T y luego btn dash el tipo de botón. Este es un detalle, por lo que esta sería b2 info de la industria, solo para mostrar la info. Y entonces este botón va a ser costo igual a b2 y peligroso, No, yo usuario no podría decir cuál es un botón, cuál es un enlace. Todos ellos se verán iguales. Tenemos este botón Eliminar. Lo que podemos hacer es decir onclick. Ya miramos esas cosas de eventos cuando hablamos de JavaScript antes, puedo ver, ¿Estás seguro de que quieres eliminar este registro? Entonces onclick, voy a devolver un confirmar. Entonces ese es un método incorporado. ¿ Y cuándo miraremos el método de alerta en JavaScript? Al hacer clic, confirmado es solo otro métodos JavaScripts que estoy viendo desclicar volver, confirmar. ¿ Estás seguro de que quieres eliminar este registro? Yo soy que básicamente sólo da un sí, no caja. Eso es realmente todo lo que necesito para el botón. Pero luego volvemos a la forma uno. Queremos asegurarnos de que sea el método post. Ahora voy a explicar por qué queríamos ser explícitos sobre que fuera post. Hay una serie de cosas sucediendo con los postes. Por lo que los beneficios implícitos de usar los posts que ya exploramos, donde hemos hablado sobre el hecho de que los datos no se están enviando a través de la URL. Se está ocultando en el fondo. Entonces eso es bueno. Soy protección inherente a los datos sensibles como nombre de usuario, contraseña, información de tarjeta de crédito, etcétera. No, probablemente te estés preguntando, vale, entonces qué desde entregable, tal vez la identificación. Bueno, ya vimos que en el Foro Delete incluso entonces, intentaron usar el post aquí porque este mismo concepto, golpearon el ID y luego tuvimos el botón eliminar. Es lo mismo que estamos haciendo excepto que lo estamos haciendo dentro de la lista en el índice. Pero entonces otros beneficios de la publicación serían incorporados en ASP.Net Core, nuestras características de seguridad contra XSS y el CRS si los ataques. Esencialmente sin entrar en los detalles de lo que estos dos significan y así sucesivamente. La forma en que funcionan sería que las personas puedan usar JavaScript y secuestrar maliciosamente los datos que se envían a través del cable. Lo que ASP.Net tiene incorporado o ASP.Net Core. Cada vez que tengas un formulario y lo conviertes en un post método, y luego lo tienes en post esperando ese tipo de envío a través de esa publicación. Cuentan con el validar de Tolkien antiextranjero que cualquier solicitud que llegue a un puesto es válida desde el sistema y no secuestrada por una entidad externa. De acuerdo, así que eso es como una característica de seguridad que está incorporada. Doy no mencioné que no te darías cuenta de que todo eso realmente está sucediendo en segundo plano. Entonces por eso es importante que a pesar de que no estamos generando ni formamos aquí, siempre quieras asegurarte de que lo tengas como post método y esas características de seguridad casi estarían implícitas. Otras cosas que queremos hacer ahora que tenemos el formulario, tenemos el botón, tenemos que decirle a dónde ir. Ahora cuando digo raro al gol, me refiero a que las otras páginas que tenían foros como vamos a ver, el Create crearon el formulario que había dicho post método. No tenía nada explícito que decir a dónde debía ir. Eso se debe a que supondrá que una vez que se presente el formulario, se trata de una solicitud de post. Por lo que automáticamente irá al on post. De lo contrario va a conseguir lo mismo con las actualizaciones, lo mismo con el índice de eliminación, sin embargo, solo tiene uno en Get. No tiene posts. Y sabremos que estamos poniendo en una forma que va a estar tratando de llamar a un método post en la página de índice que no existe. Lo que podemos hacer ahora es crear Handlers personalizados. Así que sólo buck trucking, sólo para que entendemos en llegar a la publicación. Y el que somos capaces de crear, a esos se les llama manejadores. Estos métodos conseguir, publicar, hacer lo que sea en segundo plano, son manejadores. Por eso los llamamos. Tenemos que decirle al formulario que debe ir a su ISP, P dash page dash handler. Voy a ver DDGT. Ese es el nombre del manejador al que debe ir. El método es post. No. Además de eso, también quería obtener el valor id. Voy a ver es B dash, escribió guión ID. Eso no soy yo diciendo que cuando estás enviando el formulario, quiero que pases por encima escribí valor o un valor de cadena de consulta con ese nombre. Entonces si dijera auto ID o si dijera pulpy, sea cual sea ese tipo ahí después de que la palabra escribió, ese es el nombre de la cadena de consulta que dice el nombre del parámetro que mi manejador estará buscando . Entonces lo voy a dejar como yodo de coche en lugar de solo el DNI. Muy bien, entonces ahora se puede ver explícitamente a lo que me refiero. Por lo que ASP ruta del dash, identificación del coche debe tener el valor de at sign item dot ID. Aviso cada vez que hacemos clic en Editar o detalles, se envía automáticamente a través del ID. Eso se debe a que desde el bucle para-cada, cada elemento donde el enlace que es p root dash ID aquí. Entonces eso ya está sucediendo. Lo vemos sucediendo cuando haces clic en detalles. Se llama página de detalles y está enviando sobre el valor id. Es por eso que en Get, está viendo identificación. Al igual que con detalles o borrar más bien en Post, está buscando ID, y eso es porque el delete, déjame encontrarlo rápidamente en el Delete, realidad estamos sentados aquí. Sólo te estoy mostrando diferentes sabores. Obtienes el código generado, pero es bueno entender cómo puedes hacer lo mismo de múltiples maneras. Esto funciona el formulario y está enviando el DNI esta semana. Esto también funcionará con menos líneas de código, solo la forma. No obstante, diciendo ir a este manejador de páginas y enviar un parámetro llamado Car ID con el mismo valor de ID. Es un método postes. Estamos agregando esa confirmación al botón. Y sólo voy a comentar el enlace existente. Pero lo que vamos a hacer ahora es crear ese manejador de eliminación en el archivo de índice. En el código índice detrás. Puedo extender esto y puedo decir público y no convertirlo en una tarea asíncrona. Digamos resultado de acción de tarea porque voy a querer que devuelva un resultado real. Y voy a decir en post, eliminar. Vamos a ver la sintaxis en get on post. Y puedo decir post asíncrono si quiero. Esa es una convención de nomenclatura que reconocen. Eso es opcional. Pero mi punto es que uno sé es un método post del foro, por lo que tengo que especificar en post a llamo al delete. Dije que tu manejador es borra. Se buscará automáticamente un manejador llamado delete que esté esperando una respuesta post. Por lo que solo poner en cartel en git le dirá al manejador qué tipo de solicitado debe estar buscando del intento del Buró en post delete. Lo que realmente voy a hacer es solo reutilizar este código. Sólo voy a copiar eso de la eliminación generada. Ciertas cosas no serán adultas, pero eso está bien. Podemos rellenar los espacios en blanco, pero lo más importante serían los parámetros. Así que voy a decir int signo de interrogación identificación del coche. ¿ Por qué ID de coche? Porque en mi forma, el índice, sí vi que tu raíz ASPE es identificación de auto para todos los demás fue ID. ¿ Qué para este? Voy a decir identificación de auto. No lo estoy haciendo por ninguna razón especial. Sólo te estoy mostrando. Lo que realmente hace la raíz ASP. Si cambio el ID, entonces mi manejador necesita buscar ID. Si lo cambié a Puppy, necesita buscar cachorro. Sólo voy a dejarlo como identificación de auto solo para que podamos ver la diferencia. Entonces auto ID del formulario, va a llamar al pH 100 delete y es un método post. Por lo que va a ir por aquí y buscar un manejador llamado delete que está diseñado para en las respuestas post que está tomando el parámetro llamado Car ID, entonces el código tendrá que ser ajustado porque no hay identificación ya no es identificación aquí, no es identificación del coche, identificación del coche. Ahora había visto que no hay auto seguro de un auto, eso está bien. Puedo ver fácilmente, dame una variable local llamada auto, porque no necesito una propiedad de la clase como la última vez. Sólo necesito una propiedad local llamada auto. Ve y encuentra el auto. ¿ Encontraste el auto? ¿Sí o no? En caso afirmativo, entonces retire auto. Muy bien, así que esta es sólo mi variable local dentro de la eliminación. Entonces al hacer clic en Eliminar, tratamos de encontrar ID, señor. Tratamos de determinarlos. Id tiene un valor. De no llamarse por teléfono. Probablemente no querrías no llamar aquí. Si estamos eliminando directamente del índice, entonces eso está bien, eso está bien. Podemos dejarlo. Quiero decir, una vez más, el contexto determinará cómo quiere utilizar una experiencia para ser. Así que eso está bien. Lo dejamos, lo dejamos como esta identificación del coche. Si hace clic en él, no telefoneado, intente encontrar el auto. Si el auto no es igual a nulo, entonces lo eliminamos y luego recargamos la página de índice. Lee Erich a *****. Bueno, eso podría ser fácilmente redirigir a la página sin nada en ella. Entonces literalmente solo diría, ¿en qué página estoy? Permítanme volver a cargar esa página. También podríamos decir tono de retorno. Por eso lo hice. En realidad resulta aquí. Entonces, a diferencia de éste, este no tenía un tipo de retorno. Por lo que no necesitaba los resultados de la acción i. Pero en este caso quiero devolver alguna forma de mando para decir llevarme de vuelta a la página en la que estoy. Por eso dije tarea, resultado de acción aquí. Retinol acaba de hacer la redirección a la página sin ningún valor. Así que sólo te estoy mostrando los diferentes escenarios. Una vez que te pongas cómodo, empiezas a escribir el código a nivel experto, entonces estarías como, vale, sí, veo como todo va juntos y sostengo todo funciona. Tomemos este otro Delete o esta alternativa eliminar código para una prueba de ejecución. Tan bien tomó autos y luego está bien, podemos arreglar este problema de visualización más adelante. No hay problema. Haga clic en Eliminar. Aquí está nuestro pronta. ¿ Estás seguro de que quieres eliminar este registro? Si hacemos clic en Ok, va, causó el manejador, el borrarlo leía Eric al pH. Así que vamos a crear otro auto de prueba. Algún año aleatorio. Voy a poner un punto de descanso. No estoy en modo de debug. Déjame ir al modo de debug y luego podemos poner un punto de interrupción para ver qué pasa. Cuando hago clic en Eliminar. Recibo el clic del prompt, Ok, entonces procede a llamar al manejador. Entonces, una vez más, supo dónde buscar porque le dije el formulario, usar ese método en particular y pasar por encima de ese ID de ruta en particular. Y esta es la solicitud de método, el método a utilizar. Los tres de estos se combinan para dejar que se presente el formulario nulo que quiere. Debería golpear a este manejador y al lado de codificación de este manejador, el nombre sugiere que es, es un, un 100 supuestamente para manejar este escenario. Este escenario es que quiero eliminar este auto, identificaciones de autos tres, de acuerdo, por lo que vemos que el ID de ruta va por encima. Bueno, obviamente llamó al auto en la datos o encontrará la base de datos actual, lo eliminará, y luego redirigirá a la página en la que está. Así que déjame golpear a F5 y ya ves que acabas de leer Eric sin ningún ajetreo. Muy bien, así que acabo de arreglar rápidamente la pantalla es que estás teniendo aquí con los botones. Y es una solución realmente simple. Probabilidad, incluso un HUC, dependiendo de cómo lo mires. Pero en lugar de poner las etiquetas de ancla lado viejo, acabo de poner todo en la forma porque la forma es lo que estaba rompiendo las líneas. Entonces acabo de poner las etiquetas de anclaje dentro del formulario y eso es realmente saber consecuencias porque al final del día, sólo el botón hará el envío. Si hago clic en Editar, simplemente se alejará. Si hago click en Detalles, navega lejos. Entonces si hago clic en Eliminar, me solicitan efectivamente cancelado. No pasa nada. Y luego si hago clic en Ok, hemos visto lo que pasa. Esto es agujero. Puedes empezar a trabajar un poco de JavaScript en el nodo para empezar a ver, vale, bueno, esto es lo que se supone que debe hacer. Cuando volvamos, te voy a mostrar un poco más de JavaScript. Empezaré a diseñar nuestras páginas porque vemos que nuestro botón Crear está arriba. Parece un enlace. Empezamos a mirar total para dar estilo al botón Editar, la lista de botones sigue siendo un enlace. El detalle tiene dos enlaces. Entonces, cuando volvamos, veremos un aviso de confirmación más robusto. Vamos a estar usando esta biblioteca llamada Sweet alert. Eso es uno. Y cómo podemos usar JavaScript o jQuery para conseguir eso en. Y dos comenzarán a estilizar un poco más los RPGs. 14. Uso de vistas parciales y mejoras de la UI: Muy bien, bienvenido de nuevo. Entonces nuestro objetivo para esta lección es un estilo todos nuestros enlaces para lucir un poco más amigables. Y lo que queremos hacer es poner en una confirmación un poco más robusta en la eliminación al menos. Empecemos. En primer lugar, vamos a crear el cambio y crear enlace. Déjame saltar del modo de depuración, ir a mi archivo index.html, y aquí está el botón Crear. Entonces vimos que todo lo que tenemos que hacer por nuestras etiquetas de anclaje es darles la clase BTN dash. Soy primaria para el Create. Vamos a ser un poco más creativos allí momentos en los que tal vez quieras pensar en poner los iconos ¿verdad? Así que a veces no quieres que toda la palabra edite o toda la palabra detalles. Y incluso puedes quitar un poco estos iconos de tubería. O incluso como el Create que probablemente querrías y es un signo más en su alma. Lo que podemos usar para eso sería Font Awesome, que es una biblioteca que tiene una serie de iconos. Y podemos mirarlo rápidamente. Si saltas a Font Awesome.com y estamos viendo los iconos en la versión 4.7, verás que tienes bastantes iconos que puedes usar. La mayoría de ellos son gratuitos. Es posible que tengas que pagar o inscribirte en alguna cuenta que tengan, pero eso está bien. Pero en este momento, hay tantos íconos que te sacas de la caja que es realmente genial. Entonces si quieres un signo más, estoy seguro de tener un uso Pelosi de plus. Creo que tienen como un frijol o basura o algo para significar eliminar. Pero tienen bastantes iconos que podemos usar con el fin de solo mostrar ciertas cosas. Ahí vamos, basura. Por lo que a veces quieres un ícono. Ahora, ¿qué crees que podrías ser? Se llama otra cosa, pero no hay problema. Veamos cómo podemos integrar esto en nuestro proyecto. Volver a nuestro código. Podemos hacer clic derecho dub, dub, carpeta raíz dub. Y luego podemos agregar una biblioteca del lado del cliente. Cuando hacemos eso, sólo tenemos que escribir en fuente. También muchos asientos ya tipo de relleno adeudados por nosotros. Así Font, Impresionante, selector de iconos. Y entonces ese no es el 101. No es un icono de peaker. Déjame intentarlo de nuevo. Así que solo estoy quitando la ubicación objetivo. Permítanme en realidad sólo asesorar y empezar de nuevo. Así que agrega biblioteca del lado del cliente. Simplemente escribiré fuente, y ahí está, guión de fuente, Impresionante. Eso es lo que quiero. Cuando hacemos clic en eso verás va a decirles a los que vamos a estar poniéndolo en la ubicación objetivo de dub, dub, dub route slash font. Impresionante. Pero me gusta que todas mis bibliotecas de terceros estén organizadas en el mismo lugar. Entonces en cambio voy a decir dub, dub, dub route slash, LIB slash Font. Impresionante, Ahí es donde quiero. Pero estos son todos los archivos que vamos a conseguir. Y no voy a modificar nada de eso. Voy a elegir archivos específicos. Sólo voy a seguir adelante y golpear Instalar. Y luego descargará lo requerido para mí y lo agregará a la carpeta que especifico. Ahí está, Font Impresionante. También tenemos un archivo adicional en forma de este Lindeman dot JSON, que básicamente es simplemente llamativo decir que estas son las bibliotecas que has utilizado el gestor de biblioteca cliente para instalar. Muy bien, eso se ve bien hasta ahora. Saber lo que necesito hacer es todo el diseño sepa que también debe incluir recursos Font Awesome. En el área de la cabeza donde puse todas mis hojas de estilo justo encima del bootstrap. Fui a poner en la hoja de estilo para la fuente. También. ¿De dónde obtengo esta hoja de estilo? Está en la carpeta lib, carpeta Font Awesome, carpeta CSS. Y entonces verás todo todo el punto Min es una especie de colapso en la deuda. Entonces en lugar de usar el todo usamos la versión minificada. Ya discutimos la diferencia entre la versión única y la minificada, correcta, por lo que sólo vamos a hacer eso. Por lo que incluimos ese expediente justo ahí. Con esa inclusión, puedo No, seguir adelante y mirar cómo puedo usar mis iconos. Si vuelvo a saltar a la página web y miro los ejemplos, entonces me mostrará cómo se ve la sintaxis y es realmente simple. Todo lo que necesitamos es una etiqueta I y luego una clase con FA. Y luego si un guión, sea cual sea el ícono que estamos buscando. Sí dijimos que queríamos como una basura para la eliminación. On. Aquí hay un ejemplo práctico. Tienes la etiqueta ancla, y no configuraron la etiqueta ancla, tienes ese ícono. Entonces lo que sea que tome el uno, ahí es donde se obtiene ese ícono de anfitrión al lado de casa. Ese libro dijimos biblioteca, etcétera para que puedas ser muy creativo y usar estos iconos como te parezca conveniente. Entonces aquí hay algo práctico que vemos aquí tenemos la papelera. ¿ Cómo obtengo la papelera? Vale, es basura. Así que sólo voy a pedir prestado esto. Saltar a nuestro código. Entonces en el botón eliminar en lugar de la palabra eliminar, solo quiero el icono para la papelera. Para editar. A lo mejor sólo quiero y déjame ver cuál es el testimonio. Entonces creo que si no me equivoco, la inteligencia realmente comenzará a llenarse u opciones basadas en el hecho de que incluyamos el CSS. ¿ Y si quisiera un libro para editar? Déjame ver si hay una edición. Editar. Hay uno explícitamente para editar. Y luego para detalles probablemente podamos usar algo como déjame ver si hay algo para los detalles. No, entonces podemos usar bulk o un viejo guion de libros Open. Ahí vamos. A veces puedes, tendrías que sentarte y explorar las diferentes ideas de íconos o las opciones más bien. Y luego te acercas a la tuya basada en lo que quieras transmitir al usuario. Así que sólo voy a previsualizar rápidamente esto. Cuando echamos un vistazo, vemos que, vale, esto parece una edición. Este es un libro abierto. Yo sostengo. Mi usuario inferiría que este es el aspecto de los detalles más y luego el ícono de la papelera no aparece. Así que si salto hacia atrás, a veces también basado en la versión de la fuente Awesome file que estás usando ciertos campos son ciertas clases podrían no funcionar. Así que como basura dot dash o podría no funcionar pero discontinuado basura mi trabajo. Así que déjame que acabo de hacer ese cambio refrescarse. Y ahí vamos. Así que estamos haciendo que nuestra papelera luzca mucho mejor. Solo te estoy mostrando que estas son formas que puedes usar para condimentar cómo serán tus pantallas si no quieres confiar solo en los iconos, porque no todo el mundo podría inferir lo que nosotros quieren que de solo los iconos y siempre se puede editar el icono de texto luego la palabra editar detalles y eliminar. No se diga que no fue muy fácil de usar porque no sabías lo que menos los iconos MIT Boulder le aporta ese poco estilo. Así que incluso para el botón Crear, el link create, más bien solo voy a copiar eso que etiqueto. Y entonces esto está creando un nuevo bot. Entonces arriba arriba, voy a ver ¿hay un signo más? Hay un signo más. Entonces si un guión más refrescar, y vemos que plus inscribirse periodos. Entonces es así como puedes empezar a sacar al corruptor a tu pantalla de tu aplicación usando estas bibliotecas de terceros. Puedes pasar por. Desafía a rediseñar estas páginas, ponerme en el buck para enumerar un poco más robusto en los detalles. Ella es la editora y el dinero para enumerar aquí y vamos a necesitar ya está haciendo lo que tiene que hacer. Puedes seguir adelante y hacer eso. Por lo que espero que asumiera ese reto y que siguiera adelante y aplicara algo de creatividad a las otras páginas. Pero te voy a mostrar lo que hice. Y así podemos comparar notas en la edición. Todo lo que hice fue agregar esto de nuevo a la lista. Ahora observa que esta lista anterior de dos es, es un golpeado con una bobina primaria o ambas. Sólo tiene esa mirada cuando me pongo sobre ella. Eso se logró fácilmente mediante el uso BTA y la línea de guión, guión primario. Por todas las páginas que tenían el dólar para listar el enlace hacia abajo en la parte inferior, lo que hice fue moverlo fuera de la DV estaba adentro, ponerlo en el mismo div que el botón Enviar, y luego darle el btn, btn esbozar primaria. Y todo lo demás permaneció intacto, pero le di icono de flecha izquierda. Aún entonces, perdí una oportunidad aquí con la entrada. Entonces la entrada no puso en ese icono. En la entrada. El botón guardar es solo una entrada no es una etiqueta de botón, es solo una etiqueta de entrada. Si quisiera poner en algo para decir que está guardado y no podría usar la entrada. Lo que tendría que hacer es usar el botón. Vine a mostrarte lo que hice y me estoy dando cuenta de que si tuviera más espacio para mejoras para poder cumplir con ese botón y darte la clase btn, btn dash advertencia. Y luego los botones pueden tomar un tipo. Y éste sería un botón Enviar. Eso está bien. Pero entonces por su ícono, veamos qué ícono podría usar aquí. Si es, hay un Save, vale, si guardo y creo que eso nos va a dar ese disquete, este ícono de aspecto. Entonces después de hacer esos cambios, termino con ese botón de guardar versus las entradas. Así que solo te estoy mostrando cómo puedes usar diferentes etiquetas para lograr la misma funcionalidad. Por lo que ahora puedo eliminar esa etiqueta de entrada o esa entrada. Sí y no. Sólo tengo este guardado con ícono o arriba para enumerar. Una vez más, esa pequeña animación hover se logra solo por falta BTN, guión de contorno, y luego tienes la misma advertencia primaria, peligro, etcétera yo estaba en un proceso. Te veré en que cada página que tenía el buck to list link, todo lo que hice fue moverla al mismo grupo de formularios que el botón para el envío. Entonces esa es la página de actualización en el Crear. Hice lo mismo para poder conocer el mismo tipo de modificación aquí con el botón Crear. Sólo voy a hacer eso mientras todos estamos aquí mirando. Tomado ese botón y esto es casi tan sencillo copia NPS solo la diferencia sería que esto sería primario. O puedo hacerlo algo más como el éxito porque es un Create, así que es éxito, crear. Y luego puede tener también el ícono de guardar. Podía ver si hay algo más que me vendría bien. No puedo pensar en nada más este momento, así que lo dejaré con la página Guardar, la Crear. Clip hasta la lista dos y hago clic en Crear nuevo, obtengo ese botón verde. Ese buck para enumerar. De acuerdo, entonces para mi página de detalles donde tuve la edición y volver a Listar los mismos principios. Entonces este es el mismo botón que viene de la página de índice para el Editar. Y entonces esta es la misma lista de bucket que hemos estado usando. No, hay una pequeña diferencia sintáctica en el discurso de detalles donde el ID de ruta del tablero ASP por supuesto es model.py car dot ID. Entonces esa es una diferencia entre lo que habría sido y lo que tenía que escribir lo que había en la página de índice más bien frente a lo que tiene que ser en esta página. De lo contrario. Ahora estamos empezando a ver cómo podemos añadir un poco, vez más carácter a nuestra aplicación. Ahora que sabemos integrar bibliotecas de terceros, lo último que vamos a hacer es usar alertas dulces para manejar la confirmación para el Delete en lugar del script Java estándar pronta que actualmente estamos utilizando. Paso número uno, encontremos nuestras dulces alertas Biblioteca. Haga clic con el botón derecho www root otra vez, agregue biblioteca del lado del cliente. Y sólo voy a escribir dulces alertas ahí está apareciendo. Sólo voy a seguir adelante e incluir eso. Y luego una vez más estoy cambiando la ubicación. Quería dub, dub, dub o root slash lib slash slash sweet alert. Adelante y pulsa Instalar. Se actualizará o gestor de biblioteca o un archivo lib man. Por lo que ahora sabemos qué biblioteca adicional se ha agregado, pero también obtenemos los archivos o el archivo agregado al proyecto. Sepan que eso está en su lugar. Vamos a saltar a nuestro archivo de diseño e incluir el guión. Entonces la razón por la que vamos a incluirla en el layout y no en la página ni en la, ya sabes, exactamente donde eso si lo queremos en múltiples lugares, entonces tendrías que repetir esa inclusión en todas partes, que no necesariamente quiero. Por lo que sólo voy a incluir la amenaza por encima del sitio SIG. Simplemente agregaré esa etiqueta de script donde el SRC es igual a. Voy a saber que está en la barra de lib asientos barra de alerta. Todo eso estaba abajo por inteligencia. Agradable y limpio. Es decir, no, podemos acceder a esa biblioteca de alertas dulces desde cualquier lugar de nuestra aplicación. posible que lo desee en diferentes páginas. Cuando tienes diferentes archivos de índice, quieres tener el mismo tipo de funcionalidad de eliminación. Puedes, puedes hacerlo en todas partes. Cuando vuelvo a mi página de índice, necesito configurar una sección para un guion. Ahora, esto es algo que ya vimos porque en nuestra página Crear, era su sección para guiones. Entonces déjame darte un trasfondo en cuanto a lo que es esta sección lo puedo resaltar en. De acuerdo, queríamos incluir los guiones y así sucesivamente, pero no expliqué del todo por qué la sección está ahí y no solo incluimos los guiones. Volviendo a nuestra vieja página alelo, notarías que tienes diferentes secciones, por lo que tienes el tipo de datos de vista. Ya establecimos para qué sirve eso. También tenemos el cuerpo de render. Ya establecimos que ahí es donde todo el contenido dentro de nuestras vistas, se va a renderizar dentro de todo el layout posteriormente, no, verás que también tienes una sección que dice render sección llamada scripts, y no se requiere. Esto permite que siempre que queramos poner en un script, podamos invocar esa sección, poniendo ese script jQuery JavaScript personalizado o lo que sea. Y cuando la página de un todo se renderiza, ese área de guion se rendería debajo todo lo demás o relativo a su posición en la pieza Leo, ahí es donde se renderizará. Esto es importante porque recuerden hablo de dependencias. Jquery, entonces, entonces bootstrap tiene una dependencia de jQuery. Eso significa que no puedo poner la inclusión de arranque o referencia de escritura por encima de jQuery porque entonces lo que Bootstrap necesita hacer no estará disponible porque jQuery no estaba disponible. Al igual que con la dulce alerta. No puedo llamarlo una dulce alerta si no tengo la biblioteca de alertas dulce ya disponible en el momento en que estoy escribiendo mi código. Si bien tenemos que hacer es asegurarnos de que tengamos todos nuestros scripts que se necesitan en todos los ámbitos, todo en nuestro diseño y luego en nuestros puntos de vista cada vez que necesitemos un script o personalizado referenciado a otro script, nos aseguramos de que lo ponga en sección. Volviendo a uno de los foros existentes, el razonablemente a hacer los scripts de validación es que los scripts de validación son ambas bibliotecas relacionadas con jQuery. Estaremos llamando a la funcionalidad jQuery antes de que exista el archivo jQuery. Lo pone en esta sección para que cuando toda la página de diseño se renderice con todos los guiones y la novela y así sucesivamente. Jquery ya está en la página. Entonces para cuando se carga el formulario, los scripts de validación jQuery se cargan después del jQuery. En nuestro caso, queremos asegurarnos de que llamamos a nuestro dulce código de alerta después las bibliotecas de alertas dulces no estén en un pitch en la sección de ciencias a la que fui. Mira, quise abrir y cerrar la sección de guiones. Entonces aquí puedo empezar a escribir mi propio JavaScript personalizado o jQuery o lo que quiera. En esta situación, necesito un evento jQuery para ver cuándo se está enviando el formulario. Muy bien, así que leamos esto juntos. Veamos si va a funcionar, pero solo te voy a guiar por lo que estoy haciendo y podemos arreglarlo a medida que avanzamos. Entonces signo de dólar, estamos usando jQuery. Así que una vez más, no puedo estar usando el código jQuery hasta que la biblioteca jQuery ya exista y haya sido invocada. Sólo voy a signo de dólar C. Poner en esa función punto la función global abierta y cerrada, corsé punto y coma. Y luego dentro de esta función o puedo empezar a escribir mi código personalizado. Así que signo de dólar, y estoy buscando un envío de formulario. Por lo que sólo voy a decir formulario presentar. Entonces en un formulario de envío, queremos que el teléfono Shun. Y fui a darles a dos un parámetro llamado E. Así que E es como un argumento de evento para ver, bueno, represento el evento que está a punto de suceder. Por lo que estás tratando de presentar el formulario. E tiene la información para todo lo que está a punto de pasar. Lo primero que quería hacer es decirle E dot prevent default porque la operación por defecto de un envío de formulario es enviar. Quería pausar eso porque estoy a punto de preguntar, ¿Estás seguro? Muy bien. Entonces el botón recuerda que estamos agradando a esta materia sin hacer clic con las dulces alertas. Por lo que hace clic en el botón, quiero pausar el comportamiento predeterminado del envío del formulario. Y entonces voy a ver swale, que es mis dulces alertas, mientras que es corto para alertas dulces. En lugar de esos tirantes abiertos. Y luego voy a, solo, en JavaScript, la sugerencia de código no es tan poderosa como HTML y CSS y C-sharp. Entonces lo que intenté hacer es cuando abro algo que cierra a la misma hora y pongo el punto y coma, así que no lo olvido más adelante. Swale toma algunos argumentos y si lo desea, puede buscar la dulce documentación de alerta. Siempre es bueno mirar el documento es. Así que cuando no estés seguro, pero por ahora solo continuaré y solo lo veremos aquí. Entonces fui a ver, ¿estás seguro? ¿ Este es el título de la pronta? Como? Entonces tenemos el texto, que será el mensaje real que la persona va a ver, que es lo que voy a ver como lo que teníamos antes. ¿ Estás seguro de que quieres eliminar este registro? Ir a ver ícono. Icono es advertencia, por lo que sabe que este es un momento muy serio. Voy a decir botones igual a verdad. Así que las alertas dulces realmente pueden ser como un pop-up para decir, está bien, esto sucedió. clic fuera y dices, bien, cuando dices botones, sin embargo, por defecto te va a dar la archaea y cancelar tipo de prompt como lo que vimos con el onclick. Entonces también vemos que un modo de peligro es cierto. Observe que cada línea termina con una coma porque esto es como un edificio o para todo el objeto. Tenga en cuenta que tenemos el dulce objeto de alerta que Bill dijo que necesitamos seguir viendo. Entonces. El entonces parte va a ser como un delegado notas para ver, ver la entrada del usuario. Los insumos se almacenarán en cualquier variable que pongamos. Ento