DESARROLLO DE APLICACIONES II - Randy Pausch." · DESARROLLO DE APLICACIONES II ASP.Net MVC Creando...

Post on 04-Oct-2018

226 views 1 download

Transcript of DESARROLLO DE APLICACIONES II - Randy Pausch." · DESARROLLO DE APLICACIONES II ASP.Net MVC Creando...

DESARROLLO DE APLICACIONESII

ASP.Net MVC

Creando el controladorAdminPeliculasController

Mtro. Yonatan Eric Cruz Hernández

Agregando el controlador

• Siguiendo esta presentación podremos crearel controlador AdminPeliculas que será laclase que donde se podrán agregar nuevosregistros (películas), editarlos y eliminarlos,posteriormente se definirá un rol de acceso aeste controlador.

• Agregamos el controlador AdminPeliculas:

• Agregamos el usign de Peliculas_4.Models;• Declaramos una instancia de nuestro EntityModel

llamado PeliculasEntities db = newPeliculasEntities();

• Crear la vista del Index que muestre la lista delas películas, similar a la práctica anterior deGéneros:

• Entonces el código de

la acción Index() queda:

Agregar el link en el Site.Master• Agregamos el link en el archivo Site.Master

para agregar el botón Administrar:

• Ejecutamos el proyecto y revisamos elresultado:

Personalizando la vista

• Personalizamos el código de la vista generadade tal manera que se vea como en la siguienteimagen:

ResultadoVista Index del controlador AdminPeliculas.

AHORA PREPÁRATEViene lo más interesante

Creando el formulario

• Vamos a crear el formulario para insertar unnuevo registro.

• Creamos la acción Crear()

Si agregamos la vistanos muestra el siguienteresultado al depurar elproyecto:

• En este caso nos pide PeliculaId(autoincrement), GeneroId (se tiene queespecificar el id del genero).

• Lo que necesitamos es No mostrar el campode PeliculaId y en lugar de GeneroId que nosmuestre una lista de los generos disponiblespara poder seleccionar el género de la películaa agregar.

¿CÓMO HACEMOS ESTO?

• Crear un modelo especial para la vista Crear yEditar (acciones dentro del controllerAdminPeliculas), porque ambas utilizarán elmismo formulario.

• Agregamos una carpeta llamada ViewModel anuestro proyecto:

• Debemos crear un nuevo modelo que seráuna clase llamada: AdminPeliculasViewModeldentro de la carpeta creada.

Código de AdminPeliculasViewModel

• El código de este modelo (clase) quedaría así:

• NOTA: Después de crear la claseAdminPeliculasViewModel debemos volver agenerar el proyecto o compilar para usar laclase como otro modelo más.

• Agregar el espacio de nombres usingPeliculas_4.ViewModel al controladorAdminPeliculas.

• Posteriormente la acción (método) crearquedará de la siguiente forma:

• Nota: Si creaste la vista Crear.aspx, elimina esearchivo.

• Creamos la vista para la acción Crear() de la clasePeliculas.ViewModel.AdminPeliculasViewModelcon contenido Create, esto para indicar que elformulario será para crear un nuevo registro.

Si observas el código que segenera, solo declara el formularioy el botón SUBMIT, si lo ejecutas,no mostrara los cuadros de textodonde se ingresarán los datos.

Necesitamos entonces, crearnuestra propia plantilla paraeditar o crear un objeto de laclase Pelicula.

Para ello, creamos una carpetallamada EditorTemplates enViews/Shared donde se encuentraSite.Master.

• En esa carpeta creamos una vista llamadaPelicula (mismo nombre de la entidad).

• En crear vista, seleccionamos Crear una vistaParcial (.ascx), clase de datosPeliculas_4.Models.Pelicula, contenido deview Edit.

• Al código generado le eliminamos algunaspartes, ya que solo necesitamos los campos detexto necesarios, eliminando el txt paraPeliculaId y el txt Disponible y generamos elListBox con la lista de los géneros, quedandoel código de la siguiente manera:

• Y el código de la vista Crear.aspx queda de lasiguiente forma:

• Ejecutamos, vamos aAdministrar, elegimosRegistrar nueva película yobtenemos:

• Ya tenemos nuestroformulario para crear (loutilizaremos también paraeditar), pero si intentamosguardar no lo hará, ya queno hay una acción quetome los datos enviadospor el form.

Validando los datos

• Se necesita validar los datos ingresados por elusuario, donde los campos no pueden ser nullo validar el tipo de dato ingresado.

• La validación deberá realizarse cuando elusuario ingrese los datos.

• Vamos a crear una parte de la clase Pelicula(partial class Pelicula). En la carpeta Models,agregamos la clase llamada Pelicula.cs

• Y el código generado es similar al siguiente:

• Y para que la validación se realice en nuestroformulario agregamos el siguiente código a lavista Pelicula.ascx

• Nótese que Peliculas_4 es el nombre delproyecto, modificarlo por el suyo.

• En la vista Crear.aspx reemplazamos el códigoque valida el formulario:

<% using (Html.BeginForm()) {%>

<%: Html.ValidationSummary(true) %>

• Por el código que habilita la validación por ellado del cliente (navegador):

<% Html.EnableClientValidation(); %>

<% using (Html.BeginForm()) {%>

• Si ejecutamos nuestro proyecto, nos situamosen http://localhost:xx/AdminPeliculas/Crear eingresamos un título, lo eliminamos ypasamos a otro txt, podremos ver que lavalidación funciona.

• Ya que tenemos la validación, crearemos otrafunción en el controlador que reciba los datospor medio de POST (similar a GET), la acciónquedara así (debajo de la acción Crear()):

• Ejecutamos el proyecto y creamos un nuevoregistro, Listo, ya podemos crear nuevosregistros con validación de datos.

• Solo nos falta la acción de Editar y eliminar,dicha acción utiliza el mismo formulario y lavalidación creados.