[WebMatrix 2] Nueva Extensión Image Optimizer

Una de las tareas comunes que tenemos en un sitio es la optimización de imágenes, obviamente se puede hacer automáticamente cuando el usuario es quien sube la imagen, sin embargo hay veces que las imágenes son estáticas, que son parte del look&feel. Para ayudarnos en la tarea de la optimización de estas imágenes, WebMatrix permite instalar desde la nueva Extensión Gallery un componente llamado ImageOptimizer

Lo primero que tienes que hacer es pinchar en Gallery:

image

Luego seleccionar ImageOptimizer de la galeria de extensiones e instalar:

image

Una vez instalado podemos seleccionar una carpeta o archivos individuales para optimizar

image

Para realizar la optimización se conecta a un servicio de Yahoo developer networks http://www.smushit.com/ysmush.it/ , por lo que tienes que estar Online para ejecutarlo.

image

Luego al ver la carpeta antes de la optimización

image

Tamaño 1.143Kb

Y luego de optimizar:

image

Tenemos la carpeta con 991KB, si bien no es mucho la reducción, hay que considerar que lo hice sobre imágenes ya optimizadas.

Sin duda una ayuda extra  siempre se agradece Sonrisa

Saludos!
Chalalo

WebMatrix 2 Beta Liberado! Listado de algunas nuevas características

Se nos vino rápidamente el beta del WebMatrix 2, con muchas mejoras,  realmente me tiene sorprendido, el producto conserva su estilo minimalista, pero tiene potencialidades importantes, puedes instalarlo desde acá:

http://www.microsoft.com/web/webmatrix/beta.aspx

Ojo!: reemplaza a la versión de WebMatrix 1 así que si estas desarrollando viento en popa, te recomiendo usar una máquina virtual.

image

Dentro de las mejoras tenemos:

En términos de soporte para código php:

  • Autocompletación de código php (cool!)
  • Ayuda en línea para sentencias (también disponible para html, css, javascript)
  • image

  • Completación de código para aplicaciones específicas como wordpress
  • image

  • Y si no quedaste contento puedes customizar el intellisense  y la quick info.
  • Win64-bit : C:Program Files (x86)Microsoft WebMatrixSchemasPhpPHP53Schema.xml

    Win32-bit: C:Program FilesMicrosoft WebMatrixSchemasPhpPHP53Schema.xml

    En  términos de el manejo de la BD

    • Está mejorado considerablemente la experiencia al momento de manejar la BD, más tipos de datos, en donde podemos definir el tipo de dato y las características del campo en la misma línea:

    image

    • Mejoras visuales en el manejador de datos, cuando copiamos los datos, quedan tabulados en el cortapapeles de manera de que al pegarlos en excel, se respete la organización de los mismos (disculpen los datos, puse cualquier cosa Lengua fuera)

    Webmatrix, copiamos….

        image

    y Pegamos en Excel!

       image

    • Posibilidad de ejecutar múltiples consultas, al igual que el WM1, pero esta vez los datos tabulares corresponden a cada pestaña de la query ejecutada:

    image

    • Ejecutar consultas seleccionadas, este era requerimiento muy popular, ahora lo podemos hacer:

    image

    Del punto de vista de la UI

    • Crear un sitio o abrir un sitio remoto rápidamente:

    image

    • Al igual que visual studio 2011, podemos acceder a un CSS Color Picker Pro al momento de definir nuestros estilos:

    image

    • Galería de Extensiones para ver e instalar extensiones para WebMatrix creadas por nosotros o contribuciones de la comunidad:

    image

    • Definir el workspace por defecto:

    image

    Está demás decir que es un producto Beta, existen algunos bugs que te pueden aparecer  por ahí. Acá hay una lista de Issues:

    http://www.microsoft.com/web/post/webmatrix-2-beta-readme

    Puedes ver más mejoras en:

    http://blogs.iis.net/rlucero/archive/2010/10/07/webmatrix-beta-beta-2-released.aspx

     http://blogs.iis.net/rlucero/archive/2011/09/16/webmatrix-2-beta-released.aspx

    [Tips] Metro Icons Pack,útiles para Apps para Win8 con HTML5

    image

    Pequeño tip, en donde puedes encontrar iconos para tus aplicaciones , ya sean web, móviles, o de escritorio para Windows 8 y Metro, puedes descargarlos desde acá:

    http://www.windowswiki.info/2010/03/29/metro-icon-pack-windows-phone-7-icons/

    En IconsPedia también:

    http://www.iconspedia.com/search/metro/

    Claramente hay más sitios con iconos, sería interesante compartirlos Sonrisa

    Saludos,
    Gonzalo

    Visual Studio 2011–Mejoras en el Editor de CSS

    Esto es algo que se estaba echando menos, contar con un editor CSS más completo, que nos permitiera mayor facilidad  a la edición de los estilos. Veamos algunas mejoras:

    Reducción automática en la finalización de las instrucciones

    Es raro el nombre, pero entendámoslo mejor con un ejemplo:

    image

    Con solo escribir estas tres letras ya tenemos la propiedad CSS que más se ajusta a lo que queremos. Otro caso es escribiendo las primeras letras de la propiedades por ejemplo font-weight (fw):

    image

    Identación automática de propiedades heredadas

    Muy utili a la hora de organizar nuestras  propiedades CSS (bueno, depende como los organices dentro del código), VS11 nos va identando automáticamente el código, una imagen vale más que mil palabras:

    image

    Te puedes fijar como P es el ancestro de más alto nivel, luego el div que esta dentro de p y finalmente los link que están dentro del div que a su ves está dentro del párrafo. De todas maneras , sino te parece esta forma de Identar, puedes desactivarla, en las opciones de formato del item CSS.

    Soporte para CSS Hack

    Espera!, primero, si no sabes que son los CSS Hack, te invito a que veas este articulo de anieto2k http://www.anieto2k.com/2006/12/26/css-entendiendo-y-aplicando-los-hacks/ para que vayas entendiendo un poco más estas artes ocultas para mejorar la aplicación de los CSS entre browser los cuales no todos soportan las mismas propiedades. El soporte incluye el IntelliSense y validaciones para las propiedades que comienzan con el (*) y la línea abajo (_)

    image

    Los selectores Hack típicos también son incluidos con la funcionalidad que antes hablábamos acerca de la identación, por ejemplo, el siguiente selector hack se usa cuando el navegador des IE7 , y sigue conservando la indentación :

    Soporte Proveedores de propiedades específicos ( o más breve, soporte para –moz,-webkit)

    CSS3 presenta muchas propiedades que han sido implementadas por los diferentes browser en diferentes momentos. Esto ha obligado a los desarrolladores y diseñadores a escribir propiedades especificas para cada navegador, es el caso de, por ejemplo, border-radius.

    image

    Comentando y des comentando código

    Al igual que en nuestro código programático, tenemos acceso a shortcuts en el editor para comentar Control +K C y des comentar con Control +K U.

    Color Picker

    Como decimos en el Sur de Chile, esto es una “choreza”, un agregado que nos hará más fácil la selección de colores:

    image

    Luego podemos expandir esta lista a un completo color picker,en donde además tenemos la posibilidad de seleccionar el alpha channel y es agregado automáticamente al valor de la propiedad:

    image

    Snippets

    Los Snippets en el Editor de CSS nos facilitan la creación de estilos cross-browser. Muchas propiedades CSS3 requieren configuraciones específicas para un browser.

    image

    y luego al seleccionarlo son agregadas todas las variantes específicas por navegador automáticamente:

    image

    Algo similar ocurre con las muy de moda CSS3 Media Queries, que solo agregando la @ y luego presionando la tecla tab,  tenemos un intellisence muy útil:

    image

    Además y como es de costumbre con estas características, podemos crear Snippets personalizados.

    Regiones

    Esto viene a poner orden en nuestro código, y es el mismo concepto que tenemos en nuestro código programático:

    image

    Luego al minimizar:

    image

    Como puedes ver está escrito como comentario, por lo que es ignorado por los browser al momento del render del CSS, sin embargo, nos puede facilitar la tarea de organizar nuestras propiedades. (Ojo región debe ser con minúscula )

    Por mi parte, gratamente sorprendido Sonrisa

    Nos vemos!
    Gonzalo

    Visual Studio 11–ASP.NET Extraer a User Control

    Hola, revisando algunas características de Visual Studio 2011 me encontré con la nueva opción de “Extract to User Control”, veamos en que consiste

    Tienes una colección de controles que representan una funcionalidad, junto a sus validaciones y codificación:

    image

    Y piensas luego que era muy buena idea haber desarrollado esto como un control de usuario, así que seleccionas el código, botón derecho del mouse y vas a la opción “Extract to the User Control”

    image

    Luego ingresamos el nombre y ruta dentro del proyecto del nuevo control de usuario:

    image

    Ahora, ya está creado el control Rut.ascx

    image

    Y el código declarativo podemos ver en las directivas de página el registro del control y luego la utilización del mismo, todo esto es generado automáticamente por Visual Studio 11.

    image

    Bastante útil Sonrisa

    Saludos!
    Gonzalo

    Probando en entorno de desarrollo de Windows 8 ,Metro con jQuery!

    Bueno, este post va a ser breve, más imágenes que explicaciones, ya descargué la Windows 8 desde dev.windows.com, el preview con las herramientas de desarrollo.

    Lo configuré para entrar con mi cuenta de Windows Live, virtualizado obviamente:

    image

    Entonces podemos ver el “escritorio” de Windows 8, basado en estas baldosas que nos permiten mostrar distintas menú y aplicaciones.

    image

    Lo primero que probé fue obviamente Visual Studio 11, debido a que se puede utilizar HTML5 , CSS y Javascript para desarrollar aplicaciones de escritorio, quise probarlo de inmediato.

    Vemos una interfaz bastante familiar , casi idéntica a la de Visual Studio 2010

    image

    Voy a crear un nuevo proyecto, con la plantilla “Blank Application” como puedes ver de los templates JavaScript –>Windows Metro Style. La estructura del proyecto es la siguiente (Notar que agregué JQUERY)

    image

    Es una buena practica seguir esta estructura, sin embargo podemos crear nuestras propias carpetas para css, js, etc. El template nos propone referencias por defecto

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8" />
    <title>Prueba2</title>
    <!– WinJS references –>
    <link rel="stylesheet" href="/winjs/css/ui-dark.css" />
    <script src="/winjs/js/base.js"></script>
    <script src="/winjs/js/wwaapp.js"></script>
    <script src="js/jquery-1.6.4.min.js"></script>
    <!– Prueba2 references –>
    <link rel="stylesheet" href="/css/default.css" />
    <script src="/js/default.js"></script>
    </head>
    <body>
      <h1>Mi Primera App Metro!!</h1>
      <img src="images/small_logo1.png" /></br>
      Esto esta muy bueno! </br>
      <button id="boton">Click me!</button>
      <div id="texto"></div>
    </body>
    </html>

    Al modificar el CSS podemos ver la ayuda visual que nos propone Visual Studio 11:

    image

    Agregué el siguiente CSS:

    body {
    background-color:#0094ff
    }
    h1
    {
    font-family:Arial;
    color:#fff;
    }
    .cuadro
    {
    width: 300px;
    height:100px;
    border:1px solid red;
    background-color:#ceebc2;
    color:Black;
    }

    El código en nuestro default.js, será el siguiente:

    (function () {

    ‘use strict’;
    // Uncomment the following line to enable first chance exceptions.
    // Debug.enableFirstChanceException(true);
    WinJS.Application.onmainwindowactivated = function (e) {
    if (e.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
    // TODO: startup code here
    }}

    $(document).ready(function(e) {
      $("#texto").html("Con jQuery Ready!");
      $("#boton").click(function (e) {

         $("#texto").addClass("cuadro");
         $("#texto").html("Saludos desde el click y con Jquery!!");
    });
    });
    WinJS.Application.start();
    })();

    Puedes ver que utilizamos código Jquery para la manipulación de los elementos del DOM, algo bastante sencillo, es solo para demostrar!.

    Como puedes ver objecto WinJS hace toda la magia, más adelante vamos a hablar sobre esta API.

    Pantalla de propiedades del proyecto, en donde podemos setear la pagina de inicio, la descripción los logos de la aplicación dependiendo del tamaño y la orientación del dispositivo.

    image

    Ahora al ejecutar la aplicación:

    image

    Al presionar sobre el botón(notar que por defecto tiene el estilo de Metro)

    image

    Y si vemos nuestro pantalla, vemos que la imagen seteada como small logo es la que se ve en la pantalla inicial.

    image

    Que más puedo decir…

    EXCELENTE WINDOWS 8 a descargarlo!!!

    [ASP.NET VNext] WebForms Model Binding, Parte 1

    Siguiendo la serie que nos entrega ScottGu sobre las nuevas características que traerá la próxima versión de ASP.NET, en este post (que es una traducción-adaptación del post de Scott) veremos lo nuevo sobre Model Binding en WebForms.

    El Original puedes encontrarlo en:
    http://weblogs.asp.net/scottgu/archive/2011/09/05/web-forms-model-binding-part-1-selecting-data-asp-net-vnext-series.aspx

    Antecedentes del enlace de datos de hoy

    Los WebForms incluyen una serie de datasources(por ejemplo SqlDataSource, EntityDataSource, LinqDataSource) que nos permiten de manera declarativa unir datos directamente desde el servidor a webcontrols, muchos desarrolladores prefieren mantener un control total sobre sus lógica de acceso a datos y escribir esta lógica con su propio código.

    En las versiones Anteriores de Web Forms, esto podría lograrse mediante el seteo de la propiuedad DataSource directamente y luego llamar al método DataBind() del control en el code-behind. Esto funciona muy bien en muchos escenarios, sin embargo, en controles de enlaces de datos mas enriquecidos como el Gridview, que permiten operaciones automáticas como ordenación, paginación y edición, esto es insuficiente.

    Otra opción disponible hoy en día es utilizar ObjectDataSource. Este control permite la separación mas limpia de código de la interfaz de usuario con la capa de acceso a datos y permite proporcionar la funcionalidades automáticas como la paginación y ordenamiento. Sin embargo, aunque funciona bien para la sección de los datos, todavía es complicado cuando se realiza two-way databinding, solo es compatible con propiedades simples(sin “profundidad” en la unión de tipos complejos) y a menudo obliga a los desarrolladores a escribir gran cantidad de código complejo para manejar muchos escenarios (incluyendo los más comunes, como la validación)

    Introducción al Model Binding

    ASP.NET vNext incluye un nuevo soporte  “Model Binding” para WebForm. Este nuevo modelo de enlaces tiene como objetivo simplificar el trabajo con el código que se centra con la lógica de acceso a datos, al tiempo de conservar las ventajas del 2-way data-binding. Incorpora el mismo patrón de modelo de binding que se introdujo  por primera vez con ASP.NET MVC, y que ahora funciona realmente bien con el modelo de Webforms. Se hace sencillo utilizar escenarios CRUD con formularios Web – y nos permite hacerlo a traves de cualquier tecnología de acceso a datos (EF,Linq to Sql, NHibernate,ADO.NET,etc)

    Este post es parte de una serie de tutoriales de como sacar el máximo provecho de las capacidades de este nuevo modelo de enlace. En este post se demostrara como se utiliza esta nueva característica para recuperar datos, permitir la ordenación y paginación dentro de un GridView.

    Recuperar datos utilizando el SelectMethod

    Este modelo es un enfoque centrado en el  código de enlace de dato. Permite escribir métodos helper CRUD en el code behind de la página, para luego fácilmente conectarlos a cualquier control de servidor dentro de la pagina. Estos controles luego se encargarán de llamar a los métodos en el momento adecuado del ciclo de vida de la página y del binding de datos.

    Para ver un ejemplo simple de esto en acción, vamos a utilizar un control <asp:gridview>.El Gridview que vamos a ver tiene 4 columnas , 3 de ellas son campos Boundfield, y el cuarto un TemplateField. Ten en cuenta que la forma en que se ha establecido la propiedad ModelType en el Gridview el objeto Categorías, esto permite utilizar el data-binding tipado con el template field.

    <asp:GridView ID="categoriesGrid" runat="server" ModelType="WebApplication1.Model.Category"

        SelectMethod="GetCategories" AutoGenerateColumns="false">

        <Columns>

            <asp:BoundField DataField="CategoryID" HeaderText="ID" />

            <asp:BoundField DataField="CategoryName" HeaderText="Name" />

            <asp:BoundField DataField="Description" HeaderText="Description" />

            <asp:TemplateField HeaderText="# of Products">

                <ItemTemplate><%# Item.Products.Count %></ItemTemplate>

            </asp:TemplateField>

        </Columns>

    </asp:GridView>

    Se ha configurado el Gridview para recuperar los datos utilizando Model Binding, establecemos la propiedad SelectMethod del gridview para que apunte al método GetCategories() dentro del code-behind. Este método es el siguiente:

    public IQueryable<Category> GetCategories() {

     

        var northwind = new Northwind();

        return northwind.Categories.Include(c => c.Products);

    }

    Se está utilizando EF Code First para ejecutar una query Linq que devuelve una lista de categorías de la base de datos Neptuno.

    Cuando se ejecuta la pagina, el gridview llamada al método GetCategories para recuperar automáticamente los datos y lo hace de este modo:

    image

    Evitar N+1 Select

    Algo que podemos notar es que en el código anterior es que estamos utilizando: incluye (c => c.Products), esta extensión helper le dice a EF que permite además de recuperar la información por categorías, que incluya los productos relaciones, evitando tener que realizar una llamada independiente a la base de datos para recuperar esta información por cada fila que es retornada)

    El ordenado y soporte de paginación

    Podriamos haber retornado las categorías de nuestro GetCategories() usando IEnumerable<Category>, o un tipo que implemente la interface como List<Category>. En su lugar, retornamos los datos utilizando una interfaz IQueryable<Category>

    public IQueryable<Category> GetCategories() {

    var northwind = new Northwind();
    return northwind.Categories.Include(c => c.Products);

    }

    Los beneficios de utilizar esta interfaz es que permite la ejecución demorada de la  consulta, y permite un control del enlace de datos para modificar la consulta antes de ejecutarla.Esto es particularmente útil como los controles de paginación y ordenamiento. Esto controles pueden añadir automáticamente el orden y el número de página  en una consulta IQueryable<T> antes de ejecutarla. Esto tiene la ventaja de hacer estas acciones de ordenamiento y localización de la página activa muy fácil de implementar en al código, así también como de asegurarse que las operaciones que incluyen la paginación y ordenamiento se ejecutan en la base de datos y son eficientes ( y no se pagina en el cliente)

    Para habilitar la ordenación y la paginación en el GridView, se establecen las propiedades AllowSorting y AllowPaging se establece en true, y especificamos un valor para la cantidad de registros por página de 5. También se especifica el atributo SortExpression adecuado a dos de las columnas.

    <asp:GridView ID="categoriesGrid" runat="server" AutoGenerateColumns="false"

        AllowSorting="true" AllowPaging="true" PageSize="5"

        ModelType="WebApplication1.Model.Category"

        SelectMethod="GetCategories">

        <Columns>

            <asp:BoundField DataField="CategoryID" HeaderText="ID" SortExpression="CategoryID" />

            <asp:BoundField DataField="CategoryName" HeaderText="Name" SortExpression="CategoryName" />

            <asp:BoundField DataField="Description" HeaderText="Description" />

            <asp:TemplateField HeaderText="# of Products">

                <ItemTemplate><%# Item.Products.Count %></ItemTemplate>

            </asp:TemplateField>

        </Columns>

    </asp:GridView>

    El resultado de la ejecución es el siguiente:

    image

    Solo las categorías visibles en la grilla son obtenidas desde la BD, EF optimiza la consulta para llevar a cabo la operación de ordenación y de la paginación como parte de la consulta a la BD, haciendo eficiente este proceso incluso con grandes volúmenes de datos.

    Video rápido sobre el tema
    http://www.asp.net/vnext/videos/aspnet-vnext-videos-model-binding-part-1-selecting-data

    Al igual que el post anterior, espero que te sirva para saber lo que viene de nuevo en la próxima versión de Visual Studio

    Saludos!
    Chalalo

    Excelente Recurso para comenzar con Node.JS

    Hola que tal, no me para de sorprender Node.JS y sus posibilidades, no soy para nada un experto, y voy  tal como varios que pueden estar visitando este blog,con muchas ganas de aprender.

    Es por eso que quiero compartir este recurso, totalmente recomendado, personalmente me aclaró varias de las dudas que tenía. El primer recurso es el excelente Libro (en realidad es una página) :

    image

    http://www.nodebeginner.org/index-es.html

    Y el segundo en un Van de los amigos ALT.NET del 11 de Agosto

    image

    http://altnethispano.org/wiki/van-2011-08-06-nodejs.ashx

    Espero que te animes a revisar este material, yo lo hice y ufff, están muy buenos!

    Saludos!
    G.

    [ASP.NET vNext] Controles de Enlace a Datos fuertemente tipados–Web Forms no muere.

    Hola que tal, tal cual dice el titulo del post, WebForms No Muere, dilucidando algunas dudas sobre si ASP.NET WebForm llegaba a su fin. Escuché  a varios que alguna vez apoyaron bastante a Webforms, criticarlo y hasta satanizarlo, particularmente se que tiene pros y contra, pero aprovecho más sus pros para mi trabajo diario.

    Bueno, luego de esa pequeña opinión, veamos una excelente característica que apunta a facilitarnos el desarrollo de nuestras aplicaciones. Seguramente vienen más novedades, las cuales está entregando el Maestro ScottGu’s en su blog, este post es un resumen-traducción de http://weblogs.asp.net/scottgu/archive/2011/09/01/strongly-typed-data-controls-asp-net-vnext-series.aspx

    Veamos como se realiza el enlace a datos en las plantillas de los DataControls

    ASP.NET Web Forms introduce el concepto de “plantillas”, estas plantillas nos permiten  customizar el contenido de los tag generados por el webcontrol, y típicamente es usado con las expresiones data-binding.

    Cuando actualmente utilizamos el data-binding junto a las plantillas, estamos utilizando expresiones lata-bound, es  decir, la unión con los datos se hace en tiempo de ejecución en el momento de el render del control. Por ejemplo, a continuación se utiliza el método helper Eval() para enlazar las propiedades “FirstName” y “LastName” de una lista de objetos enlazados a control de repetición.

    <ul>

        <asp:Repeater runat="server" ID="customers">

            <ItemTemplate>

                <li>

                    First Name: <%# Eval("FirstName") %><br />

                    Last Name: <%# Eval("LastName") %><br />

                </li>

            </ItemTemplate>

        </asp:Repeater>

    </ul>

    Cuando se lleva a cabo la unión de los datos con posibilidad de actualización es decir “2-way data-binding”, usamos el método helper Bind().

    <asp:FormView ID="editCustomer" runat="server" >

        <EditItemTemplate>

            <div>

               First Name:

               <asp:TextBox ID="firstName" runat="server" Text=’<%# Bind("FirstName") %> />

            </div>

            <div>

                Last Name:

                <asp:TextBox ID="lastName" runat="server" Text=’<%# Bind("LastName") %> />

            </div>

            <asp:Button runat="server" CommandName="Update" />

        </EditItemTemplate>

    </asp:FormView>

    La desventaja de ambos métodos es que las llamadas a eval() y Bind() son en tiempo de ejecución, lo que significa que se pasan como argumentos cadenas de texto (strings) para representar el nombre de las propiedades, lo que se traduce a que no hay  intellisense para los nombres de las propiedades del objeto enlazado, tampoco apoyo a la navegación de código (como ir a la definición), ni menos, la comprobación en tiempo de compilación.

    Controles de Datos fuertemente tipados

    La próxima versión de ASP.NET proporciona la capacidad para permitir plantillas fuertemente tipadas. En concreto, se ha añadido la posibilidad de declarar el tipo de datos que será bindeado con la plantilla, mediante la nueva propiedad “ModelType”. Al establecer esta propiedad  habrá dos nuevas variantes en el ámbito de las expresiones de enlace de datos en las plantillas: Item y BindItem.

    Los desarrolladores pueden usar estas variables en las expressiones de enlace a datos y obtener comprobación en tiempo de compilación e Intellinsense. Por ejemplo, a continuación, se muestra un ejemplo en donde se a seteado la propiedad ModelType en un control <asp:repeater> a un objeto “Customer”. Una vez que esta propiedad ya esta seteada podemos cambiar el codigo Eval(“FirstName”) por Item.FirstName para hacer referencia a la propiedad.

    image

    Para las expresiones “2-way data-binding”, podemos utilizar la otra variable, BindItem para obtener los mismos beneficios que se mencionaron anteriormente.

    <asp:FormView ID="editCustomer" runat="server">

      <EditItemTemplate>

         <div>

           First Name:

              <asp:TextBox ID="firstName" Text=’<%# BindItem.FirstName %>runat="server" />

            </div>

            <div>

             Last Name:

                <asp:TextBox ID="lastName" Text=’<%# BindItem.LastName %>runat="server" />

            </div>

            <asp:Button runat="server" CommandName="Update" />

        </EditItemTemplate>

    </asp:FormView>

    Y si tenemos un error al escribir el código, inmediatamente vamos a obtener el aviso del error desde el motor de Intellinsense.

    image

    Un video rápido que muestra estas características en acción:
    http://www.asp.net/vnext/videos/aspnet-vnext-videos-strongly-typed-data-controls

    Esperemos los siguientes post del Master Scottgu en donde nos presenta estas interesantes novedades.

    Saludos!
    Chalalo