2008-11-08 15 views
11

¿Hay alguna razón específica por la que debería utilizar los métodos Html.CheckBox, Html.TextBox, etc., en lugar de simplemente escribir el código HTML manualmente?¿Hay algún beneficio al usar HtmlHelper en MVC?

<%= Html.TextBox("uri") %> 

emite la siguiente HTML

<input type="text" value="" name="uri" id="uri"/> 

Se adivina que le ahorra un par de pulsaciones de teclas pero aparte de eso. ¿Hay alguna razón específica por la que debería salir de mi camino para utilizar HtmlHelpers siempre que sea posible o solo es una cuestión de preferencia?

Respuesta

5

Hay enormes beneficios: métodos

Se ha sobrecargado para rellenar previamente los valores (formateado, y seguro para HTML) al igual que el ViewState.

Permite el soporte integrado para las características de Validación de MVC.

Le permite anular la representación proporcionando su propia DLL para cambiar la representación (una especie de metodología de tipo "Adaptador de Controlador").

Esto conduce a la idea de construir sus propios "controles": http://www.singingeels.com/Articles/Building_Custom_ASPNET_MVC_Controls.aspx

+2

No, el ViewState es ** ** No existe para preservar el valor de un cuadro de texto sobre la devolución de datos (s); ese es el trabajo del IPostBackDataHandler (System.Web.UI namespace, System.Web assembly). –

+0

Buena corrección de mi terminología ... +1 :) –

1

No he estado haciendo MVC demasiado tiempo, pero ya he escrito algunos métodos de extensión para generar pestañas de menú basadas en Html.ActionLink. Me permite ser coherente con mi uso y, si decido cambiar el funcionamiento de mis menús de CSS, solo modifico un único método para generar el nuevo formato de pestaña.

El otro uso que he hecho de ellos está en salida condicional usando ViewData para suministrar valores a los controles.

2

Una cosa es para la coherencia ... Siempre olvido el atributo de nombre. Además, puede ampliar las funciones para sus propios proyectos. ¡No se llaman ayudantes por nada!

2

La ventaja de usar una capa de abstracción es que el código se compruebe en el futuro de una manera conectable. Quizás hoy crees páginas de HTML 4, pero mañana quieres crear páginas XHTML o XAML o XUL. Eso es un montón de cambios si solo codifica las etiquetas en todas partes, especialmente si tiene cientos de páginas. Si todo está llamando a esta biblioteca, todo lo que tienes que hacer es volver a escribir la biblioteca. La desventaja es que, por lo general, se considera que es un poco menos legible para los humanos. Por lo tanto, lo más probable es que aumente la demanda cognitiva en sus programadores de mantenimiento. Estas ventajas y desventajas realmente no tienen nada que ver con MVC.

7

Otro beneficio es que si su ViewData contiene un valor que coincida con el nombre del campo, se completará.

p. Ej.

ViewData["FirstName"] = "Joe Bloggs"; 

<%=Html.TextBox("FirstName") %> 

rendirá

<input type="text" value="Joe Bloggs" id="FirstName" /> 
2

En realidad auto rellena el cuadro de texto en base a su primera ViewData.Model.uri y en segundo lugar por ViewData [ "uri"]. Hacerlo manualmente que había necesidad de hacer <input value="<%Html.Encode(ViewData.Model.Uri"%>" />

Cuestiones relacionadas