2009-06-01 12 views
7

Take siguiente ejemplo de código: (ASP.NET Web Forms)Container mecanografiada fuerte en WebForms

<asp:Content ContentPlaceHolderID="Contents" runat="server"> 
    <div class="blogpost-list"> 
     <asp:Repeater ID="blogList" runat="server"> 
      <ItemTemplate> 
       <h2 class="blogpost-title"> 
        <%# (Container.DataItem as BlogPost).Title %> 
       </h2> 
       <p class="blogpost-meta"> 
       </p> 
       <p class="blogpost-content"> 
        <%# (Container.DataItem as BlogPost).ParsedContent %> 
       </p> 
      </ItemTemplate> 
     </asp:Repeater> 
    </div> 
</asp:Content> 

Ahora lo que quiero hacer, es evitar el vaciado del contenido DataItem, es decir. esta línea:

<%# (Container.DataItem as BlogPost).Title %> 

me siento inspirado de la ASP.NET MVC, y se preguntaba si podría crear un fuerte mecanografiado, ver y la definimos así:

<%@ Page 
    Language="C#" MasterPageFile="~/Blog.Master" 
    AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
    Inherits="MyBlog.Default<MyStrongViewType>" 
%> 

O cualquier otro forma de evitar el encasillamiento y, en general, tener una fuerte vista tipada para ASP.NET WebForms.

¿Alguna buena idea?

Respuesta

0

Creo que puede heredar el control de Repeater y hacerlo genérico (por ejemplo, repetidor). Pero también necesitará reescribir/heredar la clase RepeaterItem.
Puede usar el artículo this o this como ejemplo.

9

.NET 4.5 tiene una solución ingeniosa para esto. Usted acaba de establecer el tipo de datos que desea utilizar en el repetidor en sí.

<asp:Repeater ID="blogList" runat="server" ItemType="BlogPost"> 
     <ItemTemplate> 
      <h2 class="blogpost-title"> 
       <%# Item.Title %> 
      </h2> 
      <p class="blogpost-meta"> 
      </p> 
      <p class="blogpost-content"> 
       <%# Item.ParsedContent %> 
      </p> 
     </ItemTemplate> 
    </asp:Repeater> 

Ver: