« Volver
in asp.net mvc read.

[ASP.NET MVC] Filtro de datos básico.

Hola, el día de hoy quiero mostrar como es posible realizar un filtro en una colección de datos utilizando ASP.NET MVC, lo primero para realizar este filtro es tener un modelo, para este ejemplo añadiremos una clase de nombre Cliente en la carpeta model, la definición de la clase es muy simple:

1: publicclass Cliente 2: { 3: publicint ClienteId { get; set; } 4: publicstring Nombre { get; set; } 5: publicstring Correo { get; set; } 6: }

Ahora vamos a crear el controlador:

1: publicclass ClienteController : Controller 2: { 3: privatestaticreadonly List clientes = new List() 4: { 5: new Cliente { ClienteId = 1, Nombre = "Julio Avellaneda", Correo = "julito_gtu@hotmail.com"}, 6: new Cliente { ClienteId = 2, Nombre = "Juan Torres", Correo = "jtorres@hotmail.com"}, 7: new Cliente { ClienteId = 3, Nombre = "Oscar Camacho", Correo = "oscarca@hotmail.com"}, 8: new Cliente { ClienteId = 4, Nombre = "Gina Urrego", Correo = "ginna@hotmail.com"}, 9: new Cliente { ClienteId = 5, Nombre = "Nathalia Ramirez", Correo = "natha@hotmail.com"}, 10: new Cliente { ClienteId = 6, Nombre = "Raul Rodriguez", Correo = "rodriguez.raul@hotmail.com"}, 11: new Cliente { ClienteId = 7, Nombre = "Johana Espitia", Correo = "johana_espitia@hotmail.com"} 12: }; 13:  14: public ActionResult Index(string name) 15: { 16: if (string.IsNullOrEmpty(name)) 17: return View(clientes); 18: else 19: { 20: ViewBag.Name = name; 21: return View(clientes.Where(c => c.Nombre.ToLower().Contains(name))); 22: } 23: } 24: }

y en el controlador lo primero es definir la fuente de datos, en este caso es una lista estática pero bien podría ser una consulta a una base de datos, luego definimos la acción Index, la cual como argumento va a recibir el nombre por el cual filtrar, y en la lógica simplemente se valida si name tiene algo o no, en caso negativo se retorna la colección en completa, y en caso contrario se realiza el filtro utilizando Linq.

Ahora la vista:

1: @model IEnumerable 2:  3: @{ 4: ViewBag.Title = "Index"; 5: } 6:  7:

Clientes

8: @using (Html.BeginForm()) 9: { 10: Nombre: 11: "text" name="name"value="@ViewBag.Name" /> 12: "submit"value="Filtrar" /> 13: 14: 15: 16: 17: 18: 19: @foreach (var item in Model) 20: { 21: 22: 23: 24: 25: 26: } 27:
Cliente Id Nombre Correo
@item.ClienteId @item.Nombre @item.Correo
28: }

Lo primero en la vista es que se define el modelo a utilizar con @model IEnumerable *(referencia sobre las vistas), luego se hace uso de un helper para definir el formulario *Html.BeginForm() y allí dentro una tabla para mostrar los datos, el resultado inicial es:

image

Y ahora, si digitamos por ejemplo ju en la caja de texto y damos filtrar efectivamente se realiza el filtro:

image

Como se puede observar es bastante simple.

Espero les sea de utilidad el post, saludos!

comments powered by Disqus