Vous êtes sur la page 1sur 6

Modelos y validacin en ASP.

NET MVC

http://msdn.microsoft.com/es-es/library/dd410405(d=printer,v=vs.100).aspx

Centros de desarrolladores Windows Windows Phone Office Windows Azure Visual Studio Ms...

Recursos de aprendizaje
Microsoft Virtual Academy Channel 9 Puentes de interoperabilidad MSDN Magazine

Comunidad
Foros Blogs CodePlex

Soporte tcnico
Autoasistencia Otras opciones de soporte tcnico

Programas
BizSpark (para empresas nuevas) DreamSpark Faculty Connection Microsoft Student

Te ha resultado til?

No

Espaa (Espaol)

Boletn de noticias Marcas registradas

Privacidad y Cookies

Trminos de uso 2014 Microsoft

Cmo: Implementar validacin remota de un cliente en MVC Cmo: Validar los datos del modelo mediante los atributos de DataAnnotations Tutorial: Utilizar plantillas de vista de MVC con scaffolding de datos

Este tema an no ha recibido ninguna valoracin - Valorar este tema En el marco de ASP.NET MVC, el modelo forma parte de la aplicacin que es responsable de la aplicacin bsica o la lgica comercial. Los objetos de modelo normalmente obtienen acceso a los datos desde un almacn persistente, como SQL Server, y realizan la lgica comercial en esos datos. Los modelos son especficos de la aplicacin y, por consiguiente, el marco de ASP.NET MVC no impone ninguna restriccin sobre los tipos de objetos de modelo que se pueden generar. Por ejemplo, puede utilizar objetos DataReader o DataSet de ADO.NET o puede utilizar un conjunto personalizado de objetos de dominio. Tambin puede utilizar una combinacin de tipos de objeto para trabajar con datos. El modelo no es una clase o interfaz determinada. Una clase forma parte del modelo no porque implemente una determinada interfaz o derive de una determinada clase base, sino debido al rol que la clase representa en la aplicacin ASP.NET MVC y dnde la clase se encuentra en la estructura de carpetas de la aplicacin. Una clase de modelo en una aplicacin ASP.NET MVC no administra directamente la entrada del explorador ni genera la salida HTML al explorador.

Definir el modelo
Los objetos del modelo son las partes de la aplicacin que implementan la lgica del dominio, tambin conocida como la lgica comercial. La lgica del dominio administra los datos que se pasan entre la base de datos y la interfaz de usuario. Por ejemplo, en un sistema de inventario, el modelo lleva un seguimiento de los elementos en almacenamiento y la lgica para determinar si un artculo est en inventario. Adems, el modelo formara parte de la aplicacin que actualiza la base de datos cuando un artculo se vende y distribuye fuera del almacn. A menudo, el modelo tambin almacena y recupera el estado modelo en una base de datos.

1 de 6

10/03/2014 04:23 p.m.

Modelos y validacin en ASP.NET MVC

http://msdn.microsoft.com/es-es/library/dd410405(d=printer,v=vs.100).aspx

Integrar el modelo y controlador


La carpeta recomendada para colocar las clases de modelo es la carpeta Models, proporcionada por Visual Studio en la plantilla de la aplicacin ASP.NET MVC. Sin embargo, tambin es habitual colocar las clases modelo en un ensamblado independiente, para que puedan reutilizarse estas clases en aplicaciones diferentes. Utilizar las clases modelo de un controlador normalmente consiste en crear instancias de las clases modelo en acciones de controlador, llamando a mtodos de los objetos modelo y extrayendo los datos adecuados de estos objetos para mostrarlos en vistas. Este es el enfoque recomendado para implementar las acciones. Tambin mantiene la separacin entre los elementos lgicos de la aplicacin, lo que facilita probar la lgica de la aplicacin sin tener que probarla mediante la interfaz de usuario. En el ejemplo siguiente se muestra una clase de modelo simple que representa un rol. C# VB

using using using using

System; System.Collections.Generic; System.Linq; System.Web;

namespace MvcSimpleModelBinding.Models { public class Person { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public string Street { get; set; } public string City { get; set; } public string State { get; set; } public int Zipcode { get; set; } } }

Enlazadores modelo
Un enlazador modelo en MVC proporciona una manera sencilla para asignar los valores de formulario expuestos a un tipo .NET Framework y pasar el tipo a un mtodo de accin como un parmetro. Los enlazadores tambin ofrecen control sobre la deserializacin de tipos que se pasan a los mtodos de accin. Los enlazadores modelo son como los convertidores de tipos, porque pueden convertir las solicitudes HTTP en objetos que se pasan a un mtodo de accin. Sin embargo, tambin tienen informacin sobre el contexto del controlador actual. Un enlazador de modelos permite asociar una clase que implementa la interfaz IModelBinder mediante un parmetro del mtodo de accin o mediante un tipo. La interfaz IModelBinder contiene un mtodo GetValue al que llama el marco para recuperar el valor de un parmetro o tipo especificado. La clase DefaultModelBinder funciona con la mayora de los tipos .NET Framework, incluidos matrices e IList, y los objetos IDictionary e ICollection.

Ejemplo de enlace modelo


En el ejemplo siguiente se muestra cmo implementar el enlace modelo simple. El modelo utilizado en este ejemplo es la

2 de 6

10/03/2014 04:23 p.m.

Modelos y validacin en ASP.NET MVC

http://msdn.microsoft.com/es-es/library/dd410405(d=printer,v=vs.100).aspx

clase Person que se defini en un ejemplo anterior. En este ejemplo se incluyen una clase PersonController y las vistas Index, Create y Details. La clase PersonController crea una lista para almacenar los objetos Person. La vista Index muestra las propiedades Id y Name de cada objeto Person de la lista. La vista Create permite al usuario escribir la informacin para un rol. La vista Details muestra toda la informacin sobre un rol seleccionado. En el siguiente ejemplo se muestra la clase PersonController: C# VB

public class PersonController : Controller { static List<Person> people = new List<Person>(); // // GET: /Person/ public ActionResult Index() { return View(people); } // // GET: /Person/Details/5 public ActionResult Details(Person person) { return View(person); } // // GET: /Person/Create public ActionResult Create() { return View(); } // // POST: /Person/Create [AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(Person person) { if (!ModelState.IsValid) { return View("Create", person); } people.Add(person); return RedirectToAction("Index"); } }

En el ejemplo siguiente se muestra la vista Index: C# VB

3 de 6

10/03/2014 04:23 p.m.

Modelos y validacin en ASP.NET MVC

http://msdn.microsoft.com/es-es/library/dd410405(d=printer,v=vs.100).aspx

<h2>Index</h2> <table> <tr> <th></th> <th> Id </th> <th> Name </th> </tr> <% foreach (var person in Model) { %> <tr> <td> <%= Html.ActionLink("Details", "Details", person )%> </td> <td> <%= Html.Encode(person.Id) %> </td> <td> <%= Html.Encode(person.Name) %> </td> </tr> <% } %> </table> <p> <%= Html.ActionLink("Create New", "Create") %> </p>

En el ejemplo siguiente se muestra la vista Create: C# VB

<h2>Create</h2> <%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again." <% using (Html.BeginForm()) {%> <fieldset> <legend>Fields</legend> <p> <label for="Id">Id:</label> <%= Html.TextBox("Id") %> <%= Html.ValidationMessage("Id", "*") %> </p>

4 de 6

10/03/2014 04:23 p.m.

Modelos y validacin en ASP.NET MVC

http://msdn.microsoft.com/es-es/library/dd410405(d=printer,v=vs.100).aspx

<p> <label for="Name">Name:</label> <%= Html.TextBox("Name") %> <%= Html.ValidationMessage("Name", "*") %> </p> <p> <label for="Age">Age:</label> <%= Html.TextBox("Age") %> <%= Html.ValidationMessage("Age", "*") %> </p> <p> <label for="Street">Street:</label> <%= Html.TextBox("Street") %> <%= Html.ValidationMessage("Street", "*") %> </p> <p> <label for="City">City:</label> <%= Html.TextBox("City") %> <%= Html.ValidationMessage("City", "*") %> </p> <p> <label for="State">State:</label> <%= Html.TextBox("State") %> <%= Html.ValidationMessage("State", "*") %> </p> <p> <label for="Zipcode">Zipcode:</label> <%= Html.TextBox("Zipcode") %> <%= Html.ValidationMessage("Zipcode", "*") %> </p> <p> <input type="submit" value="Create" /> </p> </fieldset> <% } %> <div> <%=Html.ActionLink("Back to List", "Index") %> </div>

En el siguiente ejemplo se muestra la vista Details: C# VB

<h2>Details</h2> <fieldset> <legend>Fields</legend> <p> Id: <%= Html.Encode(Model.Id) %> </p> <p>

5 de 6

10/03/2014 04:23 p.m.

Modelos y validacin en ASP.NET MVC

http://msdn.microsoft.com/es-es/library/dd410405(d=printer,v=vs.100).aspx

Name: <%= Html.Encode(Model.Name) %> </p> <p> Age: <%= Html.Encode(Model.Age) %> </p> <p> Street: <%= Html.Encode(Model.Street) %> </p> <p> City: <%= Html.Encode(Model.City) %> </p> <p> State: <%= Html.Encode(Model.State) %> </p> <p> Zipcode: <%= Html.Encode(Model.Zipcode) %> </p> </fieldset> <p> <%=Html.ActionLink("Back to List", "Index") %> </p>

Vea tambin
Otros recursos
ASP.NET MVC 2

Adiciones de comunidad

AGREGAR

6 de 6

10/03/2014 04:23 p.m.