+ All Categories
Home > Documents > Introducción a ASP MVC4

Introducción a ASP MVC4

Date post: 20-Oct-2015
Category:
Upload: waldir
View: 626 times
Download: 1 times
Share this document with a friend
Popular Tags:
94
Introducción a ASP.NET MVC 4 Intro to ASP.NET MVC 4 Por Rick Anderson |15 De agosto de 2012 Este tutorial le enseñará los fundamentos de la creación de una aplicación ASP.NET MVC 4 Web utilizando Microsoft Visual Studio Express 2012 o Visual Web Developer 2010 Express Service Pack 1. Visual Studio 2012 se recomienda, no necesitarás instalar nada para completar el tutorial. Si está utilizando Visual Studio 2010, debe instalar los componentes más abajo. Puede instalar todas ellas haciendo clic en los enlaces siguientes: Requisitos visuales Studio Web Developer Express SP1 Instalador WPI para ASP.NET MVC 4 LocalDB SSDT Si está utilizando Visual Studio 2010 en lugar de Visual Web Developer 2010, instale el instalador WPI para ASP.NET MVC 4 y el: requisitos previos de Visual Studio 2010 Un proyecto de Visual Web Developer con código fuente C# está disponible para acompañar a este tema.Descargar la versión de C# . En el tutorial de ejecutar la aplicación en Visual Studio. También puedes la aplicación disponible en Internet mediante la implementación de un proveedor de hosting. Microsoft ofrece alojamiento web gratis para hasta 10 sitios web en una cuenta de prueba gratis de Windows Azure . Para obtener información sobre cómo implementar un proyecto web de Visual Studio a un sitio Web de Windows Azure, consulte crear e implementar un sitio web ASP.NET y base de datos SQL con Visual Studio . Este tutorial también muestra cómo utilizar la entidad marco código primera migraciones para implementar su base de datos de SQL Server en la base de datos de SQL Azure del Windows (anteriormente SQL Azure). Lo que construirás A aplicar una sencilla aplicación de película-listado que apoya la creación, edición, búsqueda y listado de películas de una base de datos. A continuación se muestran dos imágenes de la aplicación que construirás. Incluye una página que muestra una lista de películas desde una base de datos:
Transcript

Introduccin a ASP.NET MVC 4Intro to ASP.NET MVC 4PorRick Anderson|15 De agosto de 2012Este tutorial le ensear los fundamentos de la creacin de una aplicacin ASP.NET MVC 4 Web utilizando MicrosoftVisual Studio Express 2012o Visual Web Developer 2010 Express Service Pack 1.Visual Studio 2012 se recomienda, no necesitars instalar nada para completar el tutorial.Si est utilizando Visual Studio 2010, debe instalar los componentes ms abajo.Puede instalar todas ellas haciendo clic en los enlaces siguientes: Requisitos visuales Studio Web Developer Express SP1 Instalador WPI para ASP.NET MVC 4 LocalDB SSDTSi est utilizando Visual Studio 2010 en lugar de Visual Web Developer 2010, instale elinstalador WPI para ASP.NET MVC 4y el:requisitos previos de Visual Studio 2010Un proyecto de Visual Web Developer con cdigo fuente C# est disponible para acompaar a este tema.Descargar la versin de C#.En el tutorial de ejecutar la aplicacin en Visual Studio.Tambin puedes la aplicacin disponible en Internet mediante la implementacin de un proveedor de hosting.Microsoft ofrece alojamiento web gratis para hasta 10 sitios web en unacuenta de prueba gratis de Windows Azure.Para obtener informacin sobre cmo implementar un proyecto web de Visual Studio a un sitio Web de Windows Azure, consultecrear e implementar un sitio web ASP.NET y base de datos SQL con Visual Studio.Este tutorial tambin muestra cmo utilizar la entidad marco cdigo primera migraciones para implementar su base de datos de SQL Server en la base de datos de SQL Azure del Windows (anteriormente SQL Azure).Lo que construirsA aplicar una sencilla aplicacin de pelcula-listado que apoya la creacin, edicin, bsqueda y listado de pelculas de una base de datos.A continuacin se muestran dos imgenes de la aplicacin que construirs.Incluye una pgina que muestra una lista de pelculas desde una base de datos:

La aplicacin tambin le permite agregar, editar y eliminar pelculas, as como ver detalles sobre los individuales.Todos los escenarios de entrada de datos incluyen la validacin para garantizar que los datos almacenados en la base de datos estn correctos.

Getting StartedInicie Visual Studio Express 2012 o Visual Web Developer 2010 Express.La mayora de las capturas de pantalla en esta serie de aplicacin Visual Studio Express 2012, pero usted puede completar este tutorial con Visual Studio 2010/SP1, 2012 de Visual Studio, Visual Studio Express 2012 o Visual Web Developer 2010 Express.SeleccioneNuevo proyectoen la pgina deInicio.Visual Studio es un IDE o entorno de desarrollo integrado.Al igual que utilizar Microsoft Word para escribir documentos, utilizar un IDE para crear aplicaciones.En Visual Studio, hay una barra de herramientas en la parte superior que muestra varias opciones disponibles para usted.Tambin hay un men que ofrece otra manera para realizar tareas en el IDE.(Por ejemplo, en lugar de seleccionar elNuevo proyectode la pgina deInicio, puede utilizar el men y seleccionearchivo>Nuevo proyecto.)

Crear su primera aplicacinPuede crear aplicaciones usando Visual Basic o Visual C# como lenguaje de programacin.Seleccione Visual C# a la izquierda y seleccioneLa aplicacin Web ASP.NET MVC 4.Nombre de su proyecto "MvcMovie" y haga clic enAceptar.

En el cuadro de dilogoNuevo proyecto de ASP.NET MVC 4, seleccioneAplicacin de Internet.Deje laafeitadoracomo el motor de vista predeterminado.

Haga clic enAceptar.Visual Studio utiliza una plantilla predeterminada para el proyecto de ASP.NET MVC que acaba de crear, para que tenga una aplicacin de trabajo ahora mismo sin hacer nada!Se trata de un simple proyecto " Hola mundo!", y es un buen lugar para comenzar su aplicacin.

Desde el mendepurar, seleccioneIniciar depuracin.

Observe que el mtodo abreviado de teclado para empezar a depurar es F5.F5 hace que Visual Studio Inicie IIS Express y ejecutar la aplicacin web.Visual Studio entonces lanza un navegador y abre la Pgina principal de la aplicacin.Tenga en cuenta que la barra de direcciones del navegador dicelocalhosty no algo comoexample.com.Eso es porquelocalhostapunta siempre a su propio equipo local, que en este caso se ejecuta la aplicacin que usted slo construido.Cuando se ejecuta un proyecto web en Visual Studio, un puerto aleatorio se utiliza para el servidor web.En la imagen siguiente, el nmero de puerto es 41788.Cuando se ejecuta la aplicacin, probablemente veremos un nmero de puerto distinto.

Sacarlo de la caja esta plantilla predeterminada le da inicio, contactos y sobre las pginas.Tambin presta apoyo para registrarse y acceder y enlaces a Facebook y Twitter.El siguiente paso es cambiar el funcionamiento de esta aplicacin y aprender un poco sobre ASP.NET MVC.Cerrar el navegador y vamos a cambiar algo de cdigo.

Aadir un controladorAdding a ControllerPorRick Anderson|28 De agosto de 2012MVC est parado paramodel-view-controller.MVC es un patrn para el desarrollo de aplicaciones que son fciles de mantener, bien diseada y comprobable.Aplicaciones basadas en MVC contienen: Modelos: clases que representan los datos de la aplicacin y que usar la lgica de validacin para aplicar reglas de negocio para los datos. Vaba: archivos de plantilla que la aplicacin utiliza para generar dinmicamente las respuestas HTML. Controllers: clases que manejan las solicitudes entrantes de navegador, recuperar datos de modelo y especificar plantillas de vista que devuelven una respuesta al navegador.Nosotros ser cubriendo todos estos conceptos en esta serie de tutoriales y mostrarle cmo utilizarlos para crear una aplicacin.Vamos a empezar por crear una clase de controlador.EnExplorador de soluciones, haga clic derecho en elcontroladorescarpeta y a continuacin, seleccioneAgregar controlador.

Nombre de su nuevo controlador "HelloWorldController".Dejar la plantilla predeterminada comocontrolador MVC vacoy haga clic enAgregar.

AvisoExplorador de solucionesque crea un nuevo archivo ha sido nombradoHelloWorldController.cs.El archivo est abierto en el IDE.

Sustituir el contenido del archivo con el cdigo siguiente.using System.Web;using System.Web.Mvc; namespace MvcMovie.Controllers { public class HelloWorldController : Controller { // // GET: /HelloWorld/ public string Index() { return "This is my default action..."; } // // GET: /HelloWorld/Welcome/ public string Welcome() { return "This is the Welcome action method..."; } } }Los mtodos del controlador devolver una cadena de HTML como un ejemplo.El controlador se denominaHelloWorldControllery se llama el primer mtodo anteriorIndex.Vamos a invocarlo desde un navegador.Ejecute la aplicacin (presione F5 o Ctrl + F5).En el navegador, anexar "HelloWorld" a la ruta en la barra de direcciones.(Por ejemplo, en la figura de abajo, eshttp://localhost:1234/HelloWorld.)La pgina en el navegador se ver como la siguiente pantalla.En el mtodo anterior, el cdigo devuelto una cadena directamente.Me dijiste que el sistema slo volver algunos HTML, y as fue!

ASP.NET MVC invoca otro regulador clases (y mtodos de accin diferentes dentro de ellos) dependiendo de la URL de entrada.La lgica de enrutamiento de enlace por defecto utilizada por ASP.NET MVC utiliza un formato como este para determinar qu cdigo para invocar:/[Controller]/[ActionName]/[Parameters]La primera parte de la URL determina la clase del controlador para ejecutar.Tan/HelloWorldasigna a laHelloWorldControllerclase.La segunda parte de la URL determina el mtodo de accin en la clase a ejecutar.Tan/HelloWorld/Indexcausara laIndexmtodo de laHelloWorldControllerclase a ejecutar.Tenga en cuenta que slo tuvimos que buscar a/HelloWorldy elIndexmtodo fue utilizado por defecto.Esto es porque un mtodo denominadoIndexes el mtodo por defecto que se llamar en un controlador, si uno no se especifica explcitamente.Vaya ahttp://localhost:xxxx/HelloWorld/Welcome.ElWelcomemtodo funciona y devuelve la cadena "Este es el mtodo de accin Bienvenido...".La asignacin de MVC predeterminada es/[Controller]/[ActionName]/[Parameters].Para esta URL, es el controladorHelloWorldyWelcomees el mtodo de accin.No has usado el[Parameters]parte de la URL todava.

Vamos a modificar un poco el ejemplo por lo que puede pasar alguna informacin del parmetro de la URL al controlador (por ejemplo,/HelloWorld/bienvenida? nombre = Scott & numtimes = 4).Cambio suWelcomemtodo para incluir dos parmetros como se muestra a continuacin.Observe que el cdigo utiliza la caracterstica de parmetro opcional de C# para indicar que elnumTimesparmetro debe por defecto a 1 si no se pasa ningn valor para ese parmetro.public string Welcome(string name, int numTimes = 1) { return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);}Ejecutar la aplicacin y vaya a la URL de ejemplo (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4).Puedes probar diferentes valores paranameynumtimesen la URL.Elsistema de fijacin de ASP.NET MVC modeloasigna automticamente los parmetros con nombre de la cadena de consulta en la barra de direcciones para parmetros en su mtodo.

En tanto estos ejemplos el controlador viene realizando la parte de "VC" de MVC es decir, la obra vista y controlador.El controlador est volviendo HTML directamente.Normalmente no quieren controladores volver HTML directamente, puesto llega a ser muy incmodo al cdigo.En cambio, normalmente usaremos un archivo de plantilla de vista separada para ayudar a generar la respuesta HTML.Echemos un vistazo siguiente en cmo podemos hacer esto.

Agregar una vistaAdding a ViewPorRick Anderson|28 De agosto de 2012En esta seccin vas a modificar la clase deHelloWorldControllerpara utilizar archivos de plantilla de la vista para encapsular limpiamente el proceso de generar respuestas HTML a un cliente.A crear un archivo de plantilla de vista utilizando elmotor de vistas de maquinilla de afeitarcon ASP.NET MVC 3.Enfoque basado en la maquinilla de afeitar las plantillas tienen un.cshtmlextensin del archivo y proporcionar una manera elegante de crear HTML de salida utilizando C#.Maquinilla de afeitar minimiza el nmero de caracteres y pulsaciones de teclas necesarias al escribir una plantilla de vista y permite un fluido rpido, codificacin de flujo de trabajo.Actualmente el mtodo deIndexdevuelve una cadena con un mensaje codificado en la clase del controlador.Cambiar el mtodo deIndexpara devolver un objetoView, como se muestra en el siguiente cdigo:public ActionResult Index() { return View(); }El mtodo deIndexanterior utiliza una plantilla de vista para generar una respuesta HTML al navegador.Mtodos de controlador (tambin conocido comomtodos de accin), como el mtodo deIndexanterior, generalmente devuelven unActionResult(o una clase derivada deActionResult), los tipos primitivos no como cadena.En el proyecto, agregue una plantilla de vista que se puede utilizar con el mtodo deIndex.Para ello, haga clic derecho dentro del mtodo deIndexy haga clic enAgregar ver.

Aparece el cuadro de dilogoAgregar ver.Dejar los predeterminados de la manera que se haga clic en el botnAgregar:

Se crean la carpetaMvcMovie\Views\HelloWorldy el archivoMvcMovie\Views\HelloWorld\Index.cshtml.Se los puede ver en elExplorador de soluciones:

A continuacin muestra el archivoIndex.cshtmlque se cre:

Agregue el siguiente cdigo HTML en la etiqueta.Hello from our View Template!A continuacin se muestra el archivo completo deMvcMovie\Views\HelloWorld\Index.cshtml.@{ ViewBag.Title = "Index";}

Index

Hello from our View Template!Si est utilizando Visual Studio 2012, en el explorador de soluciones, haga clic con el botn derecho el archivoIndex.cshtmly seleccioneMostrar en la pgina Inspector.

ElInspector pgina tutorialtiene ms informacin acerca de esta nueva herramienta.Tambin puede ejecutar la aplicacin y busque el controladorHelloWorld(http://localhost:xxxx/HelloWorld).El mtodo deIndexen su controlador no mucho trabajo;simplemente funcion la declaracinreturn View(), que especifica que el mtodo debe utilizar un archivo de plantilla de vista para representar una respuesta al navegador.Porque no especificar explcitamente el nombre del archivo de plantilla de vista utilizar, ASP.NET MVC por defecto utilizando elIndex.cshtmlVer archivo en la carpeta\Views\HelloWorld.La imagen de abajo muestra la cadena "Hola de nuestra plantilla de vista!" en la vista.

Se ve bastante bien.Sin embargo, observe que barra de ttulo del navegador muestra "ndice mi A ASP.NET" y el gran enlace en la parte superior de la pgina dice "logo aqu."A continuacin el enlace de "su logotipo aqu." registro y entrar en enlaces y por debajo de la que se vincula a la casa, cerca y pginas de contacto.Vamos a cambiar algunas de ellas.Cambiar puntos de vista y pginas de diseoEn primer lugar, usted quiere cambiar el ttulo "tu logo aqu.", en la parte superior de la pgina.Ese texto es comn a todas las pginas.Realmente se implementa en un nico lugar en el proyecto, a pesar de que aparece en cada pgina de la aplicacin.Vaya a la carpeta/Views/Shareden elExplorador de solucionesy abra el archivo_Layout.cshtml.Este archivo se llama unapgina de diseoy es compartido "shell" que utilizan todas las dems pginas.

Las plantillas de diseo permiten especificar el diseo de envase HTML de su sitio en un solo lugar y luego aplicarlo a travs de varias pginas en su sitio.Busque la lnea de@RenderBody().RenderBodyes un marcador de posicin donde todas las pginas de vista que creas demuestran para arriba, "envueltas" en la pgina de diseo.Por ejemplo, si selecciona el enlace de sobre, el punto de vistaViews\Home\About.cshtmlse representa dentro del mtodoRenderBody.Cambie el encabezado del ttulo de sitio en la plantilla de diseo de "tu logo aqu" a la pelcula"MVC".

@Html.ActionLink("MVC Movie", "Index", "Home")

Reemplace el contenido del elemento title con el siguiente marcado:@ViewBag.Title - Movie AppEjecute la aplicacin y observe que ahora dice "MVC Movie".Haga clic en el enlace desobrey ver cmo esa pgina muestra "la pelcula MVC", tambin.Hemos sido capaces de hacer el cambio una vez en la plantilla de diseo y con todas las pginas en el sitio reflejan el nuevo ttulo.

Ahora, vamos a cambiar el ttulo de la vista de ndice.AbrirMvcMovie\Views\HelloWorld\Index.cshtml.Hay dos lugares para hacer un cambio: en primer lugar, el texto que aparece en el ttulo del navegador y luego en el encabezado secundario (el elemento).Te haces algo diferente para que pueda ver que poco de cdigo cambia que parte de la aplicacin.@{ ViewBag.Title = "Movie List";}

My Movie List

Hello from our View Template!Para indicar el ttulo HTML para mostrar, el cdigo anterior establece una propiedadTitledel objetoViewBag(que es en la plantilla de vista de laIndex.cshtml).Si miras hacia atrs en el cdigo de la plantilla de diseo, usted notar que la plantilla utiliza este valor en el elemento decomo parte de la seccindel HTML que modificamos anteriormente.Utilizando este enfoqueViewBag, fcilmente puede pasar otros parmetros entre la plantilla de la vista y el archivo de diseo.Ejecute la aplicacin y vaya ahttp://localhost:xx/HelloWorld.Tenga en cuenta que han cambiado el ttulo del navegador, el ttulo principal y los ttulos secundarios.(Si no ve cambios en el navegador, usted puede estar viendo contenido almacenado en cach.Presione CTRL+F5 en tu navegador para forzar la respuesta desde el servidor a cargarse).El ttulo del navegador se crea con laViewBag.Titleque hemos creado en la plantilla de vista de laIndex.cshtmly el adicional "-pelcula App" en el archivo de diseo.Tambin se observa cmo el contenido de la plantilla de vistaIndex.cshtmlse fusion con la plantilla de vista_Layout.cshtmly una sola respuesta HTML fue enviada al navegador.Plantillas de diseo hacen realmente fciles de realizar cambios que afecten a travs de todas las pginas de la aplicacin.

Nuestro poco de "datos" (en este caso el mensaje "Hola de nuestra plantilla de vista!") es modificable, sin embargo.La aplicacin MVC tiene una "V" (ver) y ya tienes una "C" (controlador), pero no "M" (modelo) todava.Dentro de poco, caminaremos a travs de cmo crear una base de datos y recuperar datos de modelo de l.Pasar datos del controlador a la vistaAntes de ir a una base de datos y hablar de modelos, sin embargo, primero hablemos pasando informacin del controlador a la vista.Las clases del controlador se invocan en respuesta a una solicitud de enlace entrante.Una clase de controlador es donde se escribe el cdigo que controla el navegador entrante pide, recupera los datos de una base de datos y en ltima instancia decide qu tipo de respuesta para enviar hacia el navegador.Plantillas de vista pueden utilizarse luego de un controlador para generar y dar formato a una respuesta HTML al navegador.Controladores son responsables de proporcionar cualquier informacin u objetos son necesaria para una plantilla de vista representar una respuesta al navegador.Una mejor prctica:una plantilla de vista nunca debe realizar la lgica de negocio o interactuar con una base de datos directamente.En cambio, una plantilla de vista debe trabajar slo con los datos que es proporcionados por el controlador.Mantener esta "separacin de preocupaciones" ayuda a mantener el cdigo limpio, comprobables y ms fcil de mantener.Actualmente, el mtodo de accinWelcomeen la claseHelloWorldControllertiene unnamey un parmetro denumTimesy entonces salidas los valores directamente en el navegador.En lugar de tener el controlador representar esta respuesta como una cadena, vamos a cambiar el controlador para usar una plantilla de vista en su lugar.La plantilla de vista generar una respuesta dinmica, por lo que usted tiene que pasar brocas adecuadas de datos del controlador a la vista con el fin de generar la respuesta.Puede hacer esto al tener el controlador de poner los datos dinmicos (parmetros) que la plantilla de vista en un objetoViewBagque se puede acceder a la plantilla de la vista.Volver al archivoHelloWorldController.csy cambiar el mtodo deWelcomepara agregar un valor deMessageyNumTimesal objetoViewBag.ViewBages un objeto dinmico, que significa que usted puede poner lo que quierasel objetoViewBagno tiene ninguna propiedad definida hasta que ponga algo en su interior.Elsistema de fijacin de ASP.NET MVC modeloasigna automticamente los parmetros con nombre (nameynumTimes) de la cadena de consulta en la barra de direcciones a parmetros en su mtodo.El archivo completo deHelloWorldController.csse ve as:using System.Web;using System.Web.Mvc;

namespace MvcMovie.Controllers{ public class HelloWorldController : Controller { public ActionResult Index() { return View(); }

public ActionResult Welcome(string name, int numTimes = 1) { ViewBag.Message = "Hello " + name; ViewBag.NumTimes = numTimes;

return View(); } }}Ahora el objetoViewBagcontiene datos que se pasarn automticamente a la vista.A continuacin, necesita una plantilla de vista Bienvenido!En el mengenerar, seleccioneCrear MvcMoviepara asegurarse de que el proyecto se compila.Luego haga clic derecho dentro del mtodoWelcomey haga clic enAgregar ver.

Esto es lo que parece el cuadro de dilogoAgregar ver:

Haga clic enAgregary luego agregue el cdigo siguiente debajo del elemento deen el nuevo archivoWelcome.cshtml.A crear un bucle que dice "Hola" tantas veces como el usuario dice que debe.A continuacin se muestra el archivo completo deWelcome.cshtml.@{ ViewBag.Title = "Welcome";}

Welcome

  • @for (int i=0; i < ViewBag.NumTimes; i++) {
  • @ViewBag.Message }

Ejecute la aplicacin y vaya a la siguiente URL:http://localhost:XX/HelloWorld/Welcome?name=Scott&numtimes=4Ahora datos es tomadas de la URL y pasados al controlador usando lacarpeta del modelo.El controlador paquetes los datos en un objetoViewBagy pasa ese objeto a la vista.La vista mostrar los datos como HTML al usuario.

En el ejemplo anterior, utilizamos un objetoViewBagpara pasar los datos del controlador a la vista.Este ltimo en el tutorial, usaremos un modelo de vista para pasar datos de un controlador a la vista.El enfoque del modelo de vista pasando datos se prefiere generalmente mucho sobre el enfoque de la bolsa de vista.Ver la entrada de blogDinmico V fuertemente escribi Viewspara obtener ms informacin.Bueno, era una especie de "M" para el modelo, pero no el tipo de base de datos.Vamos a hacer lo que has aprendido y crear una base de datos de pelculas.

Agregar un modeloPorRick Anderson|28 De agosto de 2012En esta seccin aadiremos algunas clases para gestionar pelculas en una base de datos.Estas clases ser la parte de "modelo" de la aplicacin ASP.NET MVC.Usted usar una tecnologa de acceso a datos de .NET Framework conocida como elEntity Frameworkpara definir y trabajar con estas clases de modelo.Entity Framework (a menudo denominado EF) apoya un paradigma de desarrollo llamadoPrimer cdigo.Cdigo primero permite crear objetos del modelo escribiendo clases simples.(Estos son tambin conocidos como clases POCO, de "objetos CLR de llanura de edad.")Con ella podrs tener la base de datos creada sobre la marcha de sus clases, que permite un flujo de trabajo de desarrollo muy limpio y rpido.Agregar clases de modeloEn elExplorador de soluciones, haga clic derecho en la carpeta demodelos, seleccioneAgregary seleccioneclase.

Introduzca el nombre de laclase"Pelcula".Agregue las siguientes cinco propiedades a la clase deMovie:public class Movie { public int ID { get; set; } public string Title { get; set; } public DateTime ReleaseDate { get; set; } public string Genre { get; set; } public decimal Price { get; set; }}Vamos a usar la clase deMoviepara representar pelculas en una base de datos.Cada instancia de un objeto deMoviecorresponder a una fila de una tabla de base de datos, y cada propiedad de la clase deMoviese asigne a una columna en la tabla.En el mismo archivo, agregue la siguiente clase deMovieDBContext: public class MovieDBContext : DbContext { public DbSet Movies { get; set; } }La claseMovieDBContextrepresenta el contexto de la base de datos de pelcula de Entity Framework, que se encarga de obtener, almacenar y actualizar instancias de la clase deMovieen una base de datos.ElMovieDBContextse deriva de la clase baseDbContextde Entity Framework.Con el fin de ser capaces de referenciaDbContextyDbSet, debe aadir la siguiente instruccinusingal principio del archivo:using System.Data.Entity;A continuacin se muestra el archivo completo deMovie.cs.(Varios usando declaraciones que no sean necesarios han sido removido.)using System;using System.Data.Entity;

namespace MvcMovie.Models{ public class Movie { public int ID { get; set; } public string Title { get; set; } public DateTime ReleaseDate { get; set; } public string Genre { get; set; } public decimal Price { get; set; } }

public class MovieDBContext : DbContext { public DbSet Movies { get; set; } }}Crear una cadena de conexin y trabajando con SQL Server LocalDBLa claseMovieDBContextque creaste encarga de la tarea de conectar a la base de datos y mapeo de objetos de laMoviea los registros de la base de datos.Una pregunta, que usted podra preguntarse, sin embargo, es cmo especificar que se conectar a la base de datos.Hars agregando informacin de conexin en el archivoWeb.configde la aplicacin.Abra el archivoWeb.configde la aplicacin raz.(No el archivoWeb.configen la carpetaViews.)Abra el archivoWeb.configen rojo.

Aadir la siguiente cadena de conexin para el elementoen el archivoWeb.config. En el ejemplo siguiente se muestra una porcin del archivoWeb.configcon la nueva cadena de conexin agregada:

Esta pequea cantidad de cdigo y XML es todo lo que necesita para escribir para representar y almacenar los datos de la pelcula en una base de datos.A continuacin, construirs una nueva clase deMoviesControllerque puede utilizar para mostrar los datos de la pelcula y permiten a los usuarios crear nueva cartelera.

Acceso a datos de su modelo desde un controladorPorRick Anderson|28 De agosto de 2012En esta seccin, podr crear una nueva clase deMoviesControllery escribir cdigo que recupera los datos de la pelcula y lo muestra en el navegador mediante una plantilla de vista.Generar la aplicacinantes de pasar al siguiente paso.Haga clic derecho en la carpetaControllersy crear un nuevo controlador deMoviesController.Las siguientes opciones no aparecern hasta que construyes tu aplicacin.Seleccione las siguientes opciones: Nombre del controlador:MoviesController.(Este es el valor por defecto). Plantilla:Controlador MVC con acciones de lectura/escritura y vistas, con Entity Framework. Modelo de clase:pelcula (MvcMovie.Models). Clase de contexto de datos:MovieDBContext (MvcMovie.Models). Vistas:maquinilla de afeitar (CSHTML).(Predeterminado).

Haga clic enAgregar.Visual Studio Express crea los siguientes archivos y carpetas: MoviesController.cs de unarchivo en la carpeta decontroladores. Una carpeta "pelculas" en la carpeta del proyectoViews. Create.cshtml, Delete.cshtml, Details.cshtml, Edit.cshtmlyIndex.cshtmlen la carpetaViews\Movies.ASP.NET MVC 4 crea automticamente el CRUD (crear, leer, actualizar y eliminar) mtodos de accin y vistas para usted (la creacin automtica de vistas y mtodos de accin CRUD es conocida como andamio).Ahora tienes una aplicacin web completamente funcional que permite crear, lista, editar y borrar las entradas de la pelcula.Ejecute la aplicacin y busque el controlador deMoviesaadiendo/Moviesa la URL en la barra de direcciones del navegador.Porque la aplicacin se basa en el valor predeterminado enrutamiento (definida en el archivoGlobal.asax), la peticin de navegadorhttp://localhost:xxxxx/Moviesse dirige al mtodo de accin deIndexpredeterminado del controlador deMovies.En otras palabras, la solicitud de navegadorhttp://localhost:xxxxx/Movieses que efectivamente igual al navegador solicitarhttp://localhost:xxxxx/Movies/Index.El resultado es una lista vaca de pelculas, porque an alguno no ha aadido.

Crear una pelculaSeleccione el vnculoCrear nuevo.Entrar en algunos detalles acerca de una pelcula y haga clic en el botncrear.

Haga clic en el botncrearcausa la forma ser publicada en el servidor donde se guarda la informacin de la pelcula en la base de datos.Luego est redirigido a la URL/Movies, donde se puede ver la pelcula recin creada en el listado.

Crear un par ms entradas de cine.Trate deEditar,los datosyeliminarenlaces, que son todo funcional.Examinar el cdigo generadoAbra el archivoControllers\MoviesController.csy examinar el mtodo deIndexgenerado.A continuacin se muestra una porcin del controlador de la pelcula con el mtodo deIndex.public class MoviesController : Controller{ private MovieDBContext db = new MovieDBContext();

// // GET: /Movies/

public ActionResult Index() { return View(db.Movies.ToList()); }La siguiente lnea de la claseMoviesControllercrea un contexto de base de datos de la pelcula, como se ha descrito anteriormente.Puede utilizar el contexto de la base de datos de la pelcula para consultar, editar y borrar peliculas.private MovieDBContext db = new MovieDBContext();Una solicitud al controlador deMoviesdevuelve todas las entradas en la tabla deMoviesde la base de datos de la pelcula y luego pasa los resultados a la vista deIndex.Modelos inflexible y la palabra clave de @modelAnteriormente en este tutorial, usted vio cmo un controlador puede pasar datos u objetos a una plantilla de vista mediante el objetoViewBag.ElViewBages un objeto dinmico que proporciona una forma conveniente de enlazados para pasar informacin a la vista.ASP.NET MVC tambin ofrece la posibilidad de pasar fuertemente escribe datos u objetos a una plantilla de vista.Esto inflexible de enfoque permite mejor tiempo de compilacin de su cdigo y ms rico IntelliSense en el editor de Visual Studio.El mecanismo de andamios en Visual Studio utiliza este enfoque con las plantillasMoviesControllerde la clase y ver cuando se crean los mtodos y las vistas.En el archivoControllers\MoviesController.csexaminar el mtodo deDetailsgenerado.A continuacin se muestra una porcin del controlador de la pelcula con el mtodo deDetails.public ActionResult Details(int id = 0){ Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFound(); } return View(movie);}Si se encuentra unaMovie, se pasa una instancia de la modelo de laMoviea la vista de detalles.Examinar el contenido del archivoViews\Movies\Details.cshtml.Mediante la inclusin de una declaracin de@modelen la parte superior del archivo de plantilla de vista, puede especificar el tipo de objeto que espera de la vista.Al crear el controlador de la pelcula, Visual Studio incluye automticamente la siguiente declaracin de@modelen la parte superior del archivoDetails.cshtml:@model MvcMovie.Models.MovieEsta directiva de@modelle permite acceder a la pelcula que el controlador pasa a la vista mediante unModelde objeto que es inflexible.Por ejemplo, en la plantilla deDetails.cshtml, el cdigo pasa cada campo de pelcula a losDisplayNameFory ayudantes deDisplayForHTML con el objeto deModelinflexible.Los mtodos de crear y editar y vista plantillas tambin pasan un objeto de modelo de la pelcula.Examinar la plantilla de vista de laIndex.cshtmly el mtodo deIndexen el archivoMoviesController.cs.Observe cmo el cdigo crea un objetoListcuando llama al mtodo de ayudante deViewen el mtodo de accin delIndex.El cdigo pasa esta lista deMoviesdel controlador a la vista:public ActionResult Index(){ return View(db.Movies.ToList());}Al crear el controlador de la pelcula, Visual Studio Express incluye automticamente la siguiente declaracin de@modelen la parte superior del archivoIndex.cshtml:@model IEnumerable Esta directiva de@modelpermite acceder a la lista de pelculas que el controlador pasa a la vista mediante unModelde objeto que es inflexible.Por ejemplo, en la plantilla deIndex.cshtml, el cdigo recorre las pelculas haciendo una instruccinforeachsobre el objetoModelinflexible:@foreach (var item in Model) { @Html.DisplayFor(modelItem => item.Title) @Html.DisplayFor(modelItem => item.ReleaseDate) @Html.DisplayFor(modelItem => item.Genre) @Html.DisplayFor(modelItem => item.Price) @Html.DisplayFor(modelItem => item.Rating) @Html.ActionLink("Edit", "Edit", new { id=item.ID }) | @Html.ActionLink("Details", "Details", { id=item.ID }) | @Html.ActionLink("Delete", "Delete", { id=item.ID }) }Porque el objeto delModeles inflexible (como un objetoIEnumerable), cada objeto delitemen el lazo se escribe comoMovie.Entre otros beneficios, esto significa que puedes Obtn comprobacin en tiempo de compilacin del cdigo y soporte de IntelliSense en el editor de cdigo:

Trabajando con SQL Server LocalDBCdigo de entidad marco primera detect que la cadena de conexin de base de datos que proporcionaron seal a una base de datos deMoviesque no exista todava, primer cdigo creado automticamente la base de datos.Se puede comprobar que se ha creado por mirar en la carpetaApp_Data.Si no ves el archivoMovies.mdf, haga clic en el botnMostrar todos los archivosen la barra de herramientas delExplorador de soluciones, haga clic en el botnActualizary continuacin, expanda la carpetaApp_Data.

Haga doble clic enMovies.mdfpara abrir elExplorador de base de datos, a continuacin, expanda la carpetatablaspara ver la tabla de pelculas.

Nota: Si no aparece el explorador de base de datos, en el menHerramientas, seleccioneconectar a la base de datosy cancelar el cuadro de dilogoElegir origen de datos.Esto forzar abrir el explorador de base de datos.Nota: Si usted est usando VWD o Visual Studio 2010 y sale un error similar a cualquiera de las siguientes opciones siguientes: La base de datos ' C:\Webs\MVC4\MVCMOVIE\MVCMOVIE\APP_DATA\MOVIES.MDF' no se puede abrir porque es versin 706.Este servidor compatible con la versin anterior y 655.No se admite un camino de descenso de categora. "Excepcin InvalidOperation fue no controlada por el cdigo de usuario" el SqlConnection suministrado no especifica un catlogo inicial.Es necesario instalar lasHerramientas de datos de SQL ServeryLocalDB.Verificar la cadena de conexinMovieDBContextespecificada en la pgina anterior.Haga la tablaMoviesy seleccioneMostrar datos de la tablapara ver los datos que creaste.

Haga la tablaMoviesy seleccioneAbrir definicin de tablapara ver la estructura de la tabla que entidad marco cdigo primer creado para usted.

Observe cmo el esquema de los mapas de la tabla deMoviesa la clase deMovieque cre anteriormente.Cdigo de entidad marco primera crea automticamente este esquema para usted, basado en la clase deMovie.Cuando haya terminado, cierre la conexinMovieDBContextde clic derecho y seleccionandoCerrar la conexin.(Si no cierra la conexin, usted podra obtener un error la prxima vez que ejecute el proyecto).

Ahora tienes la base de datos y una pgina de listado simple para mostrar el contenido de ella.En el siguiente tutorial, a examinar el resto del cdigo escalonado y aadir un mtodo deSearchIndexy una vista deSearchIndexque le permite buscar pelculas en esta base de datos.

Examinar los mtodos de editar y editar vistaExamining the Edit Methods and Edit ViewPorRick Anderson|28 De agosto de 2012En esta seccin, podr examinar los mtodos de accin generados y vistas para el controlador de la pelcula.Entonces aades una pgina de bsqueda personalizada.Ejecute la aplicacin y busque el controlador deMoviesaadiendo/Moviesa la URL en la barra de direcciones del navegador.Mantenga el puntero del ratn sobre un enlaceEditarpara ver la direccin URL que enlaza con.

El enlaceEditarfue generado por el mtodo deHtml.ActionLinken la vista deViews\Movies\Index.cshtml:@Html.ActionLink("Edit", "Edit", new { id=item.ID })

El objetoHtmles un ayudante que se expone utilizando una propiedad en la clase baseSystem.Web.Mvc.WebViewPage.El mtodoActionLinkde la ayudante facilita generar dinmicamente hipervnculos HTML que vinculan a los mtodos de accin en los controladores.El primer argumento al mtodoActionLinkes el enlace de texto para representar (por ejemplo,Edit Me).El segundo argumento es el nombre de invocar el mtodo de accin.El argumento final es unobjeto Annimoque genera los datos de la ruta (en este caso, el ID de 4).El vnculo generado que se muestra en la imagen anterior eshttp://localhost:xxxxx/Movies/Edit/4.La ruta por defecto (establecida enApp_Start\RouteConfig.cs) toma el patrn de URL{controller}/{action}/{id}.Por lo tanto, ASP.NET se traduce ahttp://localhost:xxxxx/Movies/Edit/4en una solicitud para el mtodo de accinEditdel controlador deMoviescon el parmetroIDigual a 4.Examine el cdigo siguiente en el archivoApp_Start\RouteConfig.cs.public static void RegisterRoutes(RouteCollection routes){ routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );}Tambin puede pasar parmetros de mtodo de accin utilizando una cadena de consulta.Por ejemplo, la URLhttp://localhost:xxxxx/Movies/Edit?ID=4tambin pasa el parmetroIDde 4 para el mtodo de accinEditdel controlador deMovies.

Abrir el controlador deMovies.Los dos mtodos de accinEditse muestran a continuacin.//// GET: /Movies/Edit/5

public ActionResult Edit(int id = 0){ Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFound(); } return View(movie);}

//// POST: /Movies/Edit/5

[HttpPost]public ActionResult Edit(Movie movie){ if (ModelState.IsValid) { db.Entry(movie).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(movie);}Aviso el segundo mtodo de accinEdites precedido por el atributoHttpPost.Este atributo especifica que la sobrecarga del mtodoEditpuede ser invocado slo para solicitudes POST.Se podra aplicar el atributoHttpGetpara el primer mtodo de edicin, pero que no es necesario porque es el valor por defecto.(Nos referiremos a los mtodos de accin que implcitamente se asignaron el atributoHttpGetcomoHttpGetmtodos).El mtodo deEditHttpGettoma el parmetro ID de pelcula, levanta la pelcula usando el mtodo de Entity FrameworkFindy devuelve la pelcula seleccionada a la vista de edicin.El parmetro ID especifica unvalor predeterminadode cero si se llama al mtodoEditsin un parmetro.Si no se encuentra una pelcula, se devuelveHttpNotFound.Cuando el sistema de andamios crea la vista Edit, examin la clase deMoviey crea cdigo para representar elementosypara cada propiedad de la clase.En el ejemplo siguiente se muestra la vista Edit generado:@model MvcMovie.Models.Movie

@{ ViewBag.Title = "Edit";}

Edit

@using (Html.BeginForm()) { @Html.ValidationSummary(true)

Movie

@Html.HiddenFor(model => model.ID)

@Html.LabelFor(model => model.Title) @Html.EditorFor(model => model.Title) @Html.ValidationMessageFor(model => model.Title)

@Html.LabelFor(model => model.ReleaseDate) @Html.EditorFor(model => model.ReleaseDate) @Html.ValidationMessageFor(model => model.ReleaseDate)

@Html.LabelFor(model => model.Genre) @Html.EditorFor(model => model.Genre) @Html.ValidationMessageFor(model => model.Genre)

@Html.LabelFor(model => model.Price) @Html.EditorFor(model => model.Price) @Html.ValidationMessageFor(model => model.Price)

}

@Html.ActionLink("Back to List", "Index")

@section Scripts { @Scripts.Render("~/bundles/jqueryval")}Observe cmo la plantilla de vista tiene una declaracin de@model MvcMovie.Models.Movieen la parte superior del archivo, especifica que la vista espera que el modelo de la plantilla de vista de tipoMovie.El cdigo escalonado utiliza variosmtodos auxiliarespara optimizar el cdigo HTML.El ayudante deHtml.LabelFormuestra el nombre del campo ("Title", "ReleaseDate", "Gnero" o "Precio").El ayudante deHtml.EditorForrepresenta un elemento HTML.El ayudante deHtml.ValidationMessageFormuestra los mensajes de validacin asociados con esa propiedad.Ejecute la aplicacin y vaya a la URL/Movies.Haga clic en un enlace deEditar.En el navegador, ver el origen de la pgina.A continuacin se muestra el cdigo HTML del elemento de formulario. Movie

Title

ReleaseDate

Genre

Price

Los elementosse encuentran en un elemento HTML decuyo atributo deactionse establece a la URL/Movies/Edit.Los datos del formulario se registrar en el servidor cuando se hace clic en el botnEditar.Procesar la peticin POSTEl listado siguiente muestran la versinHttpPostdel mtodo de accinEdit.[HttpPost] public ActionResult Edit(Movie movie) { if (ModelState.IsValid) { db.Entry(movie).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(movie); }Lacarpeta del modelo ASP.NET MVCtoma los valores de forma publicada y crea un objeto deMovieque se pasa como parmetro delmovie.El mtodoModelState.IsValidverifica que los datos presentados en forma pueden usarse para modificar (edicin o actualizacin) un objeto deMovie.Si los datos son vlidos, los datos de la pelcula se guardarn en la coleccin deMoviesde ladb(MovieDBContextinstance).Los nuevos datos de la pelcula se guardan en la base de datos llamando al mtodoSaveChangesdeMovieDBContext.Despus de guardar los datos, el cdigo redirige al usuario al mtodo de accin delIndexde la claseMoviesController, que muestra la de coleccin de pelculas, incluyendo los cambios que acaba de hacer.Si los valores publicados no vlidos, ellos se volvern a Mostrar en el formulario.Los ayudantes deHtml.ValidationMessageForen la plantilla de vista deEdit.cshtmlcuidar de Mostrar mensajes de error apropiado.

Notapara apoyar la validacin de jQuery para no-Ingls locales que usan una coma (",") para un punto decimal, debe incluir laglobalize.jsy su archivo especficocultures/globalize.cultures.js(dehttps://github.com/jquery/globalize) y JavaScript para utilizarGlobalize.parseFloat.El cdigo siguiente muestra las modificaciones en el archivo Views\Movies\Edit.cshtml para trabajar con la cultura "fr-FR":@section Scripts { @Scripts.Render("~/bundles/jqueryval") $.validator.methods.number = function (value, element) { return this.optional(element) || !isNaN(Globalize.parseFloat(value)); } $(document).ready(function () { Globalize.culture('fr-FR'); }); jQuery.extend(jQuery.validator.methods, { range: function (value, element, param) { //Use the Globalization plugin to parse the value var val = $.global.parseFloat(value); return this.optional(element) || ( val >= param[0] && val


Recommended