Programación Aplicada II
Programación Aplicada II
Programación Aplicada II
<!DOCTYPE html>
</body>
</html>
Ejemplo 2 bootstrap
<!DOCTYPE html>
</form>
</div>
<div class="col-md-8 my-3">
<h2>Relación de cursos</h2>
<table class="table table-striped">
<thead>
<tr>
<th class="centrado">#</th>
<th class="centrado">Nombre del curso</th>
<th class="centrado">N° de créditos</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Fundamentos de Programación</td>
<td class="centrado">3</td>
</tr>
<tr>
<td>2</td>
<td>Física</td>
<td class="centrado">4</td>
</tr>
<tr>
<td>3</td>
<td>DIROPE</td>
<td class="centrado">3</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68S
Iy3Te4Bkz" crossorigin="anonymous"></script>
</body>
</html>
CSS:
.centrado{
text-align:center;
vertical-align:middle;
}
@page
@model AplicacionCoreRazor.Pages.sintaxixModel
@{
ViewData["Title"] = "Sintaxis de RAZOR";
}
<h2>Sintaxis de Razor</h2>
<h3>Declaración Implícita</h3>
<p>Fecha actual: @DateTime.Now</p>
<h3>Declaración Explícita</h3>
<p>La fecha de la semana pasada fue: @(DateTime.Now - TimeSpan.FromDays(7))</p>
<h3>Bloque de código en Razor</h3>
@{
var mensaje = "Bienvenidos a Sistemas UNC";
var edad = 15;
var diaSem = 4;
string mostrarMensajeMayus(string msj)
{
return msj.ToUpper();
}
}
<p>@mensaje</p>
<p>@mostrarMensajeMayus(mensaje)</p>
//SEMANA 7
Ejercicio estudiante
@page
@using AplicacionCoreRazor.Models;
@model estudianteModel
@{
ViewData["Title"] = "Estudiante";
}
@{
var listaEstudiante = new estudiante[]
{
new estudiante("Juan", 18, 'M'),
new estudiante("Marco", 19, 'M'),
new estudiante("Julia", 21, 'F'),
new estudiante("María", 19, 'F'),
new estudiante("Ricardo", 23, 'M'),
};
<h2>Ejercicio 2</h2>
<h3>Lista de estudiantes</h3>
<h3>@Model.mensaje</h3>
<table class="table">
<thead>
<tr>
<td align="center">
Lista de Estudiantes
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
<ul>
</ul>
</td>
<tr>
<td>
Cantidad: @listaEstudiante.Count()
</td>
</tbody>
</table>
</ul>
</td>
<td>
<ul>
</ul>
</td>
</tr>
<tr>
<td>
Cantidad: @m
</td>
<td>
Cantidad: @f
</td>
</tr>
</tbody>
</table>
.cs de estudiante
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace AplicacionCoreRazor.Pages
{
public class estudianteModel : PageModel
{
[TempData]
public string mensaje { set; get; }
}
}
}
Ejercicio 3
@page
@model AplicacionCoreRazor.Pages.Ejercicio3Model
@{
ViewBag.Title = "+ Sintaxis Razor";
}
<h2>Ejercicio 3</h2>
<form method="post">
<input class="btn btn-outline-primary my-2" type="submit" value="Solicitar">
</form>
<a href="Ejercicio3"><input class="btn btn-outline-primary my-2" type="button"
value="Cargar"></a>
<hr />
<p>Usted ha invocado la página web por el @Model.mensaje</p>
@if (@Model.mensaje.Equals("Método Get")){
<p>Nombre: @ViewData["nombre"] <br />Edad: @ViewData["edad"]</p>
}
.cs de ejercicio 3
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace AplicacionCoreRazor.Pages
{
public class Ejercicio3Model : PageModel
{
[TempData]
public string mensaje { set; get; }
Ejercicio: Crear una página web que muestre un formulario ingresar los valores a los
atributos de estudiantes y se carguen en la misma página todos los estudiantes que han
ingresado.
Ejer 4
@page
@model Ejemplo1.Pages.E4_formEstModel
@{
ViewBag.Title = "Ejercicio 4";
}
<h2>Ejercicio 4</h2>
<div class="container">
<div class="row">
<div class="col-sm-12 col-md-4 col-lg-4 col-xl-4">
<h2>Registro de Estudiantes</h2>
<div class="mb-3">
<label for="nombre" class="form-label">Nombre del estudiante</label>
<input type="text" class="form-control" id="nombre" placeholder="Nombre del
estudiante">
</div>
<div class="mb-3">
<label for="edad" class="form-label">Edad</label>
<input type="number" class="form-control" id="edad" placeholder="Edad del
estudiante">
</div>
<div class="form-check">
<label class="form-check-label" for="f">Femenino</label>
<input class="form-check-input" name="sexo" type="radio" id="f">
</div>
<div class="form-check">
<label class="form-check-label" for="m">Masculino</label>
<input class="form-check-input" name="sexo" type="radio" id="m">
</div>
<form method="post">
<div class="d-grid gap-2">
<button type="button" class="btn
btn-primary">Agregar estudiante</button>
</div>
</form>
</div>
</div>
</div>
@{/*
<a href="Ejercicio4"><input class="btn btn-outline-primary my-2" type="button"
value="Cargar"></a>
<hr />
<p>Usted ha invocado la página web por el @Model.mensaje</p>
@if (@Model.mensaje.Equals("Método Get"))
{
<p>Nombre: @ViewData["nombre"] <br />Edad: @ViewData["edad"]</p>
}*/
}
el cs del ejer 4
SEMANA 8
Ejercicio para la casita, las cosas q necesitas las tienes en el drive crack
@page
@model AplicacionCoreRazor.Pages.Ejercicio5Model
@{
ViewBag.Tittle = "Encuesta";
}
<h2> Ejercicio 5 - Encuesta</h2>
<div class="container">
<div class="row">
<div class="col-md-8 col-sm-12 col-lg-6 col-xl-5">
<h2>Encuesta</h2><hr />
<form method="post">
<div class="mb-3">
<label for="nombre" class="form-label">Nombre</label>
<input type="text" class="form-control" name="nombre"
placeholder="Ingrese su nombre">
</div>
<label class="mb-2">Te gustaría realizar guardias en la oficina:</label>
<div class="form-control mb-3">
<div class="form-check">
<label class="form-check-label" for="gsi">Sí</label>
<input class="form-check-input" name="guardia" type="radio" id="gsi"
value="F">
</div>
<div class="form-check">
<label class="form-check-label" for="gno">No</label>
<input class="form-check-input" name="guardia" type="radio" id="gno"
value="M">
</div>
</div>
<div class="mb-3">
<label for="com" class="form-label">Comentario</label>
<textarea class="form-control" name="com" placeholder="Ingrese su un
comentario"></textarea>
</div>
<div class="my-2">
<button asp-page-handler="EnviarDatos" class="btn btn-outline-primary
my-2">Enviar</button>
</div>
</form>
</div>
</div>
</div>
SEMANA 9
UTILIDAD DE LOS ____
2. Cambiamos todos los type y name de los elementos del formulario por un asp-for
así se ve jaja:
9. Ahora editamos y creamos cosas para que se muestre, aquí lo woa a hacer en una
tabla:
Código por aquí por si da hueva copiar
@page
@using AplicacionCoreRazor.Models
@model AplicacionCoreRazor.Pages.ListaEstudModel
@{
}
<h2>Listado de estudiantes</h2>
<div class="col-md-8">
<table class="table table-striped">
<thead>
<tr>
<th>#</th>
<th>Nombre</th>
<th>Edad</th>
<th>Sexo</th>
</tr>
</thead>
<tbody>
@{
var cont = 0;
foreach (estudiante oE in @Model.listaEstudiante)
{
cont++;
<tr>
<td>@cont</td>
<td>@oE.nombre</td>
<td>@oE.edad</td>
<td>@oE.sexo</td>
</tr>
}
}
</tbody>
</table>
</div>
EJERCICIO:
Al formulario del estudiante agregar 3 propiedades (nota1, 2 y 3), de tal manera que
cuando se registra se debe obtener el promedio de las notas con mayor valor, en la página
web listado de estudiante debe haber 2 botones para cargar los estudiantes aprobados y
desaprobados.
Hecho en casa
Una vez ahí vamos a editar cositas: (LO MISMO, IR AL PASO 13 PARA MODIFICAR LAS
COSAS DE UNA VEZ XD)
Paso 6. Ahora vamos a definir otro action con el mismo nombre para trabajar con encuesta
(ya sabes en el HomeController), en este se va a esperar un parámetro de tipo Encuesta,
cómo es que funciona no sé. A este le ponemos un [HttpPost]
Paso 10: Volvemos al HomeController pq vamos a hacer unas modificaciones bien xingonas
okno no sé la vdd
paso 13: Vamos a utilizar algo en la clase Encuesta para que no permita valores nulos
modificamos la clase Encuesta y la vista Encuesta
Tengamos en cuenta que es una validación de formulario para el lado del cliente, no para el
servidor. Por lo tanto es bueno hacer la validación por el lado del servidor también, ahora lo
haremos
Paso 14: Verificación por el lado del servidor, para eso modificamos cosas en el método
Encuesta del HomeController:
Básicamente ya estaría, ahora nomás queda agregar o cambiar más cositas que está
haciendo el profe ya veremos qué onda con eso:
Agregamos líneas 5 y 6
//Para qué usamos una base de datos?? para una mejora de seguridad, claro Dana me
hizo una pregunta así hace rato
//gran pregunta de hecho, resulta que las computadoras funcionan con 4 niveles de
protección, siendo el nivel 0 el más elevado, y este es designado para parte del sistema
operativo, la gestión de memoria, etc, el nivel 1 es casi entero para el sistema operativo, el
nivel 2 y 3 quedan para los programas, pero el nivel 2 al tener mayor protección que el nivel
3 es mayormente designado para las bases de datos, quedando el nivel 3 que es designado
para los programas. (fuente, ArCo cap Sistema operativo).
Paso 2: Ir a herramientas, administrador de paquetes y admin paquetes para la solución:
Paso 7: En consola vamos a añadir una clase que contenga la “migración” con el siguiente
código:
Add-Migration InitialCreate
y luego
Update-Database
Paso 9: Abrimos la dirección de la carpeta donde está guardado el proyecto, copiamos esa
dirección
Abrimos la encuesta desde el DB browser (acabamos de instalar) en File - Open Database
pegamos la dirección copiada antes y seleccionamos la encuesta.db
Nos abre esto:
Paso 10: Modificamos la clase EncuestaContext (o no, no estoy seguro de si hizo algo)
Paso 11: Ahora tenemos que tener en cuenta que ya no usaremos servicioEncuesta
para agregar y guardar la encuesta entonces debemos modificar los métodos donde
lo usemos:
usamos nuestra encuestaContext, que contiene un atributo T_encuesta dentro, que
es una lista entonces ahí añadimos la encuesta. Importante: no olvidar guardar los
cambios con encuestaContext.SaveChanges();
Paso 12: Por último modificamos VerRegistros:
Ahora, hay un problema, y es que al estar almacenados en una base de datos es más
difícil borrar registros, lo más seguro es que tengamos que agregar la opción así que
aquí una forma (imagino que no será la mejor y en clase la desarrollaremos pero x):
Primero agregar el botón en VerRegistros y en Encuesta.cshtml
SEMANA 12
Paso 4: Vamos a crear nuestras clases en la carpeta Models (Clase Curso, Estudiante
y Matricula)
Paso 5: Bueno ya a cada una le damos sus atributos
Estudiante:
Curso:
Matrícula: Para esta clase le vamos a agregar más cositas que solamente atributos y
constructor, algo como un método que nos servirá para determinar los valores de Grupo, en
la línea donde declaramos el Grupo tendrá un tipo de dato ‘Nombre_del_metodo?’ como
veremos en la foto: (Línea 2 se crea al crear el método enum Grupo)
*El signo de interrogación es lo que permite que el grupo acepte valores nulos, es
decir lo hace opcional.
Paso 6: A las 3 clases le vamos a agregar propiedades de tipo diálogo
(ACTUALIZADO EN LAS IMÁGENES ANTERIORES)
matricula:
estudiante:
curso:
Instalación de Paquetes:
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools
Install-Package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore
, “ConnectionStrings”: {
"DefaultConnection":
"Server=(localdb)\\mssqllocaldb;Database=BDMatricula;Trusted_Connection=True;Mu
ltipleActiveResultSets=true"
}
Paso 11: Ahora modificamos la clase contexto que creamos en el Data, lo hacemos de la
siguiente manera:
Paso 12: Generar un método para heredar de la clase getContext en la misma clase de
MatriculaContext
Paso 13: Vamos a ejecutar un nuevo servicio para conectar con la base de datos, esto
en la página Program.cs. (con eso hecho ya podemos migrar los datos a la base de
datos) Líneas 8-10
CUANDO ESTEMOS USANDO ESTO NOS VAMOS DIRECTAMENTE HASTA EL PASO
16 PARA EVITAR PROBLEMAS Y NO ES NECESARIO AÑADIR UNA MIGRACIÓN
LUEGO
y luego
Update-Database
(En caso se desee borrar una base de datos creada se usa Drop-”nombre base de
datos” (o Drop-Database en general))
Paso 17: Para este caso eliminamos la carpeta de Migraciones con todas sus clases,
cuando ejecutemos por siguiente vez la base de datos se creará automáticamente.
Paso 21: Vamos a modificar el tipo de dato que se ingresa para fecha de inscripción, esto
se hace en la clase de estudiante (en models)
Paso 22: Nos vamos a wwwroot y agregamos biblioteca del lado del ciente:
Una vez ahí seleccionamos el proveedor unpkg y escribimos lo sgt :
@fortawesome/[email protected]
pequeño problemita:
la carpeta fortawesome la vamos a mover dentro de la carpeta lib
Paso 26: Ahora hacemos lo mismo en la página Create (cambiamos formato de botones)
//para esto podemos ir directamente al paso 29 y copiar desde ahí, cuidadito con los
nombres nomás
Paso 27: vamos a hacer métodos para ordenamiento, para ello vamos a la ventana Index y
hacemos lo siguiente (OJITO que en el route el nombre sea el mismo que se recibirá en el
siguiente paso):
Bueno pues al profe le dio iwal eso, volvemos a la PÁGINA index y cambiamos “ordenar”
por @ViewData[“ordenar”]:
Vale, ahora ya funciona el botón que tenemos en la tabla para ordenar, al darle click cambia
de ascendente a descendente :)
Paso 29: Veamos otra manera para ordenar (para poder hacerlo con varios campos):
En el INDEX cambiamos el nombre del ViewData y también le agregamos un botón a fecha: