Guía Razor Page
Guía Razor Page
1.1 Conceptos
1.1.1 ¿Qué es .NET?
Es una plataforma con múltiples entornos de desarrollo de aplicaciones. Microsoft lo considera como el
Ecosistema .NET para el desarrollo de aplicaciones.
1.1.2 Compilación.
Según Microsoft, (2023). “Antes de que los desarrolladores de software puedan ejecutar su código,
deben compilarlo primero. El compilador de .NET es un programa que convierte el código fuente en un
lenguaje especial denominado lenguaje intermedio (IL). El compilador de .NET guarda el código IL en un
archivo denominado conocido como un ensamblado de .NET. Al compilar el código en un formato
"intermedio", se puede usar la misma base de código independientemente de dónde se ejecute el
código, ya sea en Windows o Linux, o en hardware de equipo de 32 o 64 bits”.
1.1.4 Bibliotecas.
Una biblioteca de código encapsula la funcionalidad para un fin específico en un único ensamblado. Para
.NET, hay miles de bibliotecas disponibles. Estas bibliotecas pueden ser propias o de terceros, y pueden
ser comerciales o de código abierto. Las bibliotecas proporcionan una amplia gama de funcionalidades
que se pueden usar en las aplicaciones. Simplemente se debe hacer referencia a esas bibliotecas y llamar
los métodos necesarios. De esta manera, como desarrollador, se basa en el trabajo de otros
desarrolladores de software. La venta es que se ahorra tiempo y esfuerzo, ya que no tiene que compilar
y mantener todas las características.
Nota: Puede instalar el SDK de .NET directamente o con la instalación de Visual Studio 2022. El SDK de
.NET preinstala un conjunto completo de bibliotecas y marcos de trabajo de aplicaciones denominados
biblioteca de clases base. Puede usar esta biblioteca de código en sus programas, independientemente
de los modelos de plataforma o aplicación que desee compilar.
Como vemos al ejecutar el comando nos aparecen la versión 6 y 7 de .NET. Eso es debido a que tengo
instalada la dos versiones. Si nos aparece un error de compilación en rojo significa que no tenemos instala
ninguna versión. Para el caso que no tengas .NET deberá bajar la versión deseada desde la página oficial:
https://dotnet.microsoft.com/es-es/download/dotnet/7.0
Igualmente podemos visualizar la versión a través de nuestro explorador de archivos a través de las
rutas.
Nota: Al terminal de instalar el gestor de base de datos debemos guardar los datos de nuestra base de
datos para futuras configuraciones y conexiones. Por ejemplo, en mi caso se genero lo siguiente al
finalizar la instalación.
Comandos para crear proyecto web con Razor Pages básico de ASP.NET
dotnet new webapp //Esta línea crea un proyecto con la framework actual
dotnet new webapp –f net6.0 //Esta línea crea un proyecto con la framework 6.0
Comandos para crear proyecto web con Razor Pages MVC de ASP.NET
dotnet new mvc //Esta línea crea un proyecto MVC en la carpeta raíz
dotnet new mvc –n nombreproyecto //Crea un proyecto MVC en una nueva carpeta
Cuando se utiliza localhost en el contexto de desarrollo web, por ejemplo, al ejecutar un servidor web
localmente, significa que estás accediendo al servidor web en tu propia computadora. Esto es útil para
probar y depurar aplicaciones web en un entorno de desarrollo antes de implementarlas en un servidor
en línea.
Cuando se configura un localhost por lo general se accede a él usando las rutas: "http://localhost" o
"http://127.0.0.1" en tu navegador.
En la anterior imagen vemos que la terminal nos indica las direcciones del localhost
(http://localhost:5004) para acceder a la visualización de nuestro proyecto. Debemos tener en cuenta el
puerto de acceso. Para cerrar la compilación se cierra usando el comando: Ctrl + C
Como bien sabemos, para escribir lenguaje HTML usamos las etiquetas propias del lenguaje; por ejemplo
<HTML>, pero para escribir lenguaje C# usamos la directiva @{}. Las páginas creadas se almacenan en la
carpeta Pages de un proyecto Razor.
Teniendo en cuenta lo anterior, en una página podemos trabajar código HTML usando las etiquetas
propias del lenguaje y código C# usando las etiquetas también conocidas como directivas del lenguaje.
En la siguiente imagen veremos una página creada llamada “ejemplo.cshtml” la cual contiene la directiva
@page de Razor Page y código html.
Ejemplo del código HTML en página Razor Page desde Visual Studio Code.
Ejemplo desde el navegador al ser compilado.
Nota: La anterior página se logró visualizar dado que escribió la URL http://localhost:5004/ejemplo de
compilación. Donde ejemplo corresponde al nombre del archivo ejemplo.cshtml
Ahora el anterior código de ejemplo solo contenía etiquetas HTML pero recordemos que en ASP.NET
puedo combinar lenguaje HTML con C#, usando la siguiente directiva: “@{ }”.Corresponde a un arroba
con llaves de apertura y cierre. Dentro de ellas se debe escribir el código C#.
Como vemos dentro de la directiva: @{ } tenemos código C# el cual es usado para almacenar datos a
través de variables. Para este caso se declara variables que almacenan datos que luego serán mostradas
a través de etiquetas lenguaje html. Nótese que las variables para que puedan ser visualizadas, en el
código HTML se combina con lenguaje C# usando el símbolo arroba (@).
Nota: Dentro de la directiva @{ } tenemos una variable “tiempoActual” la cual guarda el resultado de un
método usado para mostrar la hora actual del sistema. Esto corresponde a código C# el cual este
combinado con código HTML para la creación del formulario.
Como vemos se logro visualizar la página accediendo a la ruta localhost:5004/login desde un navegador
luego de ser compilado.
1.4.3 Estilos con Bootstrap
Bootstrap es un framework de código abierto para el desarrollo web front-end. Fue creado por Twitter
y luego se convirtió en un proyecto de código abierto de la comunidad. Bootstrap proporciona un
conjunto de herramientas y componentes predefinidos que simplifican el proceso de diseño y desarrollo
de sitios web y aplicaciones web.
Asimismo, podemos encontrar páginas que están relacionadas las cuales generan estilos
personalizados usando Bootstrap, como es el caso de https://mdbootstrap.com/
1.4.4 Conceptos de Métodos de petición o solicitudes HTTP.
HTTP define un conjunto de métodos de petición para indicar la acción que se desea realizar para un
recurso determinado. Aunque estos también pueden ser sustantivos, estos métodos de solicitud a veces
son llamados verbos HTTP. Cada uno de ellos implementa una semántica diferente, pero algunas
características similares son compartidas por un grupo de ellos.
Por ejemplo, en las imágenes anteriores hemos visto el método “post” en los formularios. Este es un
método de petición.
En Razor Pages, que es un marco de desarrollo web en ASP.NET Core, los métodos de petición o
solicitudes HTTP se utilizan para determinar cómo se maneja una solicitud HTTP específica cuando un
usuario interactúa con una página web. Los métodos de petición HTTP más comunes son los siguientes:
GET: Este método se utiliza para solicitar recursos del servidor. Cuando un navegador solicita una página
web a través de GET, el servidor responde enviando la página solicitada como respuesta. En Razor Pages,
puede usar el atributo [HttpGet] en un controlador para especificar que un método de manejo de
solicitud solo responderá a solicitudes GET.
POST: Este método se utiliza para enviar datos al servidor, como formularios HTML. Cuando un
formulario se envía utilizando POST, los datos se incluyen en el cuerpo de la solicitud HTTP en lugar de
en la URL. Puede usar el atributo [HttpPost] en un controlador de Razor Pages para especificar que un
método de manejo de solicitud solo responderá a solicitudes POST. Se utiliza comúnmente para enviar
datos del cliente al servidor, como formularios. Puedes utilizar este método para procesar los datos
enviados desde el formulario y realizar acciones como agregar registros a una base de datos.
PUT: Se utiliza para actualizar un recurso existente en el servidor. Puede usar el atributo [HttpPut] en un
controlador de Razor Pages para especificar que un método de manejo de solicitud solo responderá a
solicitudes PUT. Puedes utilizarlo para implementar la lógica de actualización de recursos
DELETE: Este método se utiliza para eliminar un recurso en el servidor. Puede usar el atributo
[HttpDelete] en un controlador de Razor Pages para especificar que un método de manejo de solicitud
solo responderá a solicitudes DELETE. Puedes usarlo para implementar la lógica de eliminación de
recursos.
PATCH: Se utiliza para realizar modificaciones parciales en un recurso existente en el servidor. Puede
usar el atributo [HttpPatch] en un controlador de Razor Pages para especificar que un método de manejo
de solicitud solo responderá a solicitudes PATCH.
HEAD: Similar a GET, pero solicita solo la información de encabezado de la respuesta sin el cuerpo del
recurso. Es útil para verificar si un recurso existe o para obtener información de metadatos sin descargar
todo el contenido. Puedes usarlo para proporcionar información de encabezado sin enviar el contenido
completo de la página.
OPTIONS: Se utiliza para obtener información sobre las opciones de comunicación disponibles para el
recurso de destino. Puede ser útil en situaciones de CORS (Cross-Origin Resource Sharing).
Nota: Estos métodos se usan en su mayoría en los formularios de una PAGE. Más adelante se vera de
forma más detallada estos métodos.
1.5 PageModel
Cada página Razor Page utiliza una Clase modelo de página denominada Model que contiene la lógica o
el comportamiento de la página. Recordemos que las páginas web contiene un código del lado del cliente
el cual permite generar la interfaz con la cual interactúa nuestro cliente o usuario, pero, asimismo
encontramos código del lado del servidor el cual es usado por la Model para recibir o enviar información
como respuesta cuando nuestro usuario realiza solicitudes desde la Page. Por lo tanto, cuando una
“Page” interactúa con su “Model” obtenemos la arquitectura cliente-servidor.
• El archivo Razor Page (.cshtml): Contiene el marcado HTML y la presentación de la página. Puede
incluir etiquetas Razor para incrustar código C# directamente en el archivo.
• La clase PageModel (.cshtml.cs): Contiene la lógica de la página, como la manipulación de datos,
la gestión de formularios y la respuesta a eventos del usuario. Esta clase se asocia con la página
Razor a través de convenciones de nomenclatura.
Por ejemplo, si tienes una página Razor llamada "Index", existirá un archivo "Index.cshtml" que contiene
la presentación o vista con la cual va interactuar el usuario y también existirá un archivo
"Index.cshtml.cs" que contiene la clase PageModel con la lógica correspondiente que usara la vista para
dar una respuesta a las solicitudes que realice el usuario. La PageModel se utiliza para separar la
presentación de la lógica de la página, lo que facilita el mantenimiento y la organización del código.
En resumen, PageModel en Razor Pages es una parte fundamental del modelo de programación que
facilita la creación de aplicaciones web con ASP.NET Core al proporcionar un medio para definir la lógica
de una página web de manera estructurada y separada de la presentación.
Para explicar el uso de los métodos Get y Post nos basaremos en ejemplos.
La Page “Mensaje.cshtml”.
La Model "Mensaje.cshtml.cs”
Hasta el momento no tienen ninguna modificación ya que el código allí encontrado fue creado gracias
al comando anterior.
Lo que obtenemos con el anterior código html es una vista como la siguiente:
Por último, nos queda agregar una codificación a nuestra Page Mensaje después del formulario que
mostrara el valor almacenado en la variable Mensaje. Nuestra página quedara así:
Ejemplo:
En el siguiente código se crea la Page “Login” con su Model en la carpeta Pages del proyecto Ventas.
El comando anterior:
• Crea los archivos siguientes con nombre Login en el espacio de nombres ventas.Pages:
• Login.cshtml: La página de Razor
• Login.cshtml.cs: La clase PageModel que la acompaña.
• Almacena ambos archivos en el directorio Pages del proyecto gracias al comando.
No hay nada mágico en el uso de la CLI para crear estos archivos. También puede crear los archivos
manualmente; el comando de la CLI es simplemente un acceso directo para hacerlo.
[BindProperty]
El atributo [BindProperty] es una característica de ASP.NET Core Razor Pages que se utiliza para enlazar
propiedades de una página Razor a los valores enviados desde una solicitud HTTP. Esto facilita la
obtención de datos de entrada del usuario, como formularios web o parámetros de consulta, y
vincularlos directamente a propiedades en su página Razor sin tener que escribir manualmente código
de enlace de datos.
Por ejemplo: Aquí vemos un objeto creado llamado “Input”. Este objeto pertenece a una clase llamada
“LoginInputModel”. Cuando se usa el objeto se puede enlazar sus atributos gracias a [BindProperty].
Nota: En este caso para su asociación se requiere del atributo “asp-for” el cual se usa para hacer
referencia al objeto.
Es fundamental que cuando se realiza una asociación exista la propiedad [BindProperty] en caso
contrario marcara un error como el siguiente al procesar la solicitud.