[ASP.NET vNext] Model Binding: Filtrando datos

Siguiendo con la serie de ASP.NET vNext que Scott Guthrie está publicando en su blog, hoy toca el filtrado de datos. Partiendo de este grid:

<asp:GridView ID="productsGrid" SelectMethod="GetProducts" DataKeyNames="ProductID"
    AllowPaging="true" AllowSorting="true" AutoGenerateColumns="false" runat="server">
    <Columns>
        <asp:BoundField DataField="ProductID" HeaderText="ID" />
        <asp:BoundField DataField="ProductName" HeaderText="Name" SortExpression="ProductName" />
        <asp:BoundField DataField="UnitPrice" HeaderText="Unit Price" SortExpression="UnitPrice" />
        <asp:BoundField DataField="UnitsInStock" HeaderText="# in Stock" SortExpression="UnitsInStock" />
    </Columns>
</asp:GridView>

Y del método GetProducts:

public partial class Products : Page
{
    Northwind db = new Northwind();
 
    public IQueryable<Product> GetProducts()
    {
        return db.Products;
    }
}
 
Vamos a ver las nuevas mejoras que dispondremos en esta nueva versión:
 

Value Providers

Esto también lo han tomado de ASP.NET MVC, para hacer que el Model Binding sea capaz de hacer un binding entre los parámetros de nuestros métodos con lo que le especifiquemos mediante “Value Provider Attributes”, algo como esto:

image

¿Como funciona todo esto?

Cuando haya un postback al servdor, el Value Provider Attribute que hemos usado en el método le indicará al Model Binding que Value Provider tiene que usar para hacer un bind de un valor del formulario con el parámetro category de nuestro método, e incluso se encargará de la conversión. En este caso se está usando un nullable para que en caso de no estra presente dicho valor, sea nulo (De ahí la comprobación category.HasValue)

En la nueva versión de ASP.NET vNext dispondremos de todos estos Values Providers y de sus respectivos Value Provider Attributes:

  • QueryString
  • Cookies
  • Form values
  • Controls
  • Viewstate
  • Session
  • Profile

Por ejmplo por QueryString sería algo así:

public IQueryable<Product> GetProducts([QueryString("q")]string keyword)

Es decir, buscará un parámetro que se llame q en el QueryString y hará un “bind” con nuestro parámetro keyword:

query

Otro ejemplo sería utilizar un control para filtrar:

image

En este caso podemos hasta indicarle el ID del control que vamos a utilizar para el filtrado.

Podéis ver un vídeo de todo esto aquí

Un saludo y hasta el próximo.

Published 13/9/2011 9:39 por Luis Ruiz Pavón
Archivado en: ,
Comparte este post:
http://geeks.ms/blogs/lruiz/archive/2011/09/13/asp-net-vnext-model-binding-filtrando-datos.aspx