2010-02-04 9 views
7

Solo me pregunto cómo y cuándo las personas están usando Editor/Display Templates versus Html Helpers. Específicamente, estoy hablando de su uso en la representación de diferentes controles de IU en lugar de entidades de renderizado.¿Cómo se usan las plantillas de Editor/Display frente a Html Helpers?

Por ejemplo, tengo algo como lo siguiente atm:

<tr> 
    <th><%= Html.LabelFor(x => x.ActivityTypeId) %></th> 
    <td><%= Html.EditorFor(x => x.ActivityTypeList, "MultiSelectDropDownList")%></td> 
</tr> 
<tr> 
    <th><%= Html.LabelFor(x => x.Name) %></th> 
    <td><%= Html.EditorFor(x => x.Name) %></td> 
</tr> 
<tr> 
    <th><%= Html.LabelFor(x => x.Description) %></th> 
    <td><%= Html.DisplayFor(x => x.Description, "DisplayString")%></td> 
</tr> 

Pero en los últimos tiempos me pregunto si yo debería estar haciendo esto:

<tr> 
    <th><%= Html.LabelFor(x => x.ActivityTypeId) %></th> 
    <td><%= Html.MultiSelectDropDownList(x => x.ActivityTypeList)%></td> 
</tr> 
<tr> 
    <th><%= Html.LabelFor(x => x.Name) %></th> 
    <td><%= Html.EditorFor(x => x.Name) %></td> 
</tr> 
<tr> 
    <th><%= Html.LabelFor(x => x.Description) %></th> 
    <td><%= Html.DisplayString(x => x.Description)%></td> 
</tr> 

Pero si voy con esta segunda opción ¿De qué sirve usar el editor intermedio para ...? Sería muy bueno usar Html.Textbox y tener la ventaja de poder establecer cualquier propiedad html que me guste.

Me interesan los patrones que las personas usan aquí ... ¿Alguna idea?

Saludos Anthony

Respuesta

5

EditorFor y DisplayFor son los aspectos más importantes de MVC 2 y en mi opinión deben ser usados ​​y abusados ​​tanto como sea posible.

saltar encima a Brad Wilson blog y echa un vistazo a cómo se puede ampliar las plantillas de objetos para azotar rápidamente pantallas basadas en la convención de ViewModels decoradas con atributos: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-5-master-page-templates.html

que estoy usando esta técnica en un proyecto actual y hasta ahora, ni siquiera se ha escrito una línea de HTML para una pantalla individual. : D

0

Me gusta tanto el segundo.

es elegante y le libera de que las cadenas buggous :)

0

he modificado (en realidad, en el proceso de modificación de) la T4 Edit, Create y View plantillas para escupir el código que quiero. Ese código no utiliza ningún método DisplayFor o EditorFor. No he profundizado en el código de estos métodos, pero estoy bastante seguro de que verán una reflexión allí. Mis plantillas modificadas actualmente generan TextBoxFor, DropDownListFor y CheckBoxFor.

Puedes usar el método en la publicación de Brad Wilson que mencionaste anteriormente si prefieres. Como mínimo tendría las plantillas escupir código para cada campo usando DisplayFor o EditorFor para que pueda volver más tarde puede cambiar a un editor específico y agregar los atributos necesarios para el campo de entrada.

Cuestiones relacionadas