¿Por qué se modificaron de manera predeterminada al agregar una nueva vista de "edición"? ¿Cuáles son las ventajas al usar EditorFor()
vs. TextboxFor()
?
encontré esto
Por defecto, los andamios Crear y Editar ahora usan el ayudante Html.EditorFor en lugar del ayudante Html.TextBoxFor. Esto mejora la compatibilidad con metadatos en el modelo en forma de atributos de anotación de datos cuando el cuadro de diálogo Agregar vista genera una vista.
asp.net-mvc
asp.net-mvc-3
razor
ShaneKm
fuente
fuente
Respuestas:
Las ventajas de
EditorFor
es que su código no está vinculado a un<input type="text"
. Así que si usted decide cambiar algo en el aspecto de cómo sus cuadros de texto se representan como envolviéndolos en undiv
simplemente podría escribir un editor de plantillas a medida (~/Views/Shared/EditorTemplates/string.cshtml
) y todos sus cuadros de texto en su aplicación beneficiará automáticamente de este cambio, mientras que si ha hardcodedHtml.TextBoxFor
se tendrá que modificarlo en todas partes. También puede usar Anotaciones de datos para controlar la forma en que se representa.fuente
TextBoxFor : Representará como elemento html de entrada de texto correspondiente a la expresión especificada. En palabras simples, siempre se representará como un cuadro de texto de entrada, independientemente del tipo de datos de la propiedad que se está vinculando con el control.
EditorFor : Este control es un poco inteligente. Representa el marcado HTML basado en el tipo de datos de la propiedad. Por ejemplo, supongamos que hay una propiedad booleana en el modelo. Para representar esta propiedad en la vista como una casilla de verificación, podemos usar CheckBoxFor o EditorFor. Ambos generarán el mismo marcado.
¿Cuál es la ventaja de usar EditorFor?
Como sabemos, dependiendo del tipo de datos de la propiedad, genera el marcado html. Supongamos que mañana si cambiamos el tipo de datos de la propiedad en el modelo, no es necesario cambiar nada en la vista. El control EditorFor cambiará el marcado html automáticamente.
fuente
El
Html.TextboxFor
siempre crea un cuadro de texto (<input type="text" ...
).Mientras que EditorFor analiza el tipo y la metainformación, y puede representar otro control o una plantilla que usted proporcione.
Por ejemplo, para las propiedades de DateTime, puede crear una plantilla que use jQuery DatePicker.
fuente
implement jquery datepicker
y usarloEditorFor
está aquíEsta es una de las diferencias básicas no mencionadas en los comentarios anteriores: la
Readonly
propiedad funcionará con el cuadro de texto para y no funcionará conEditorFor
.El código anterior funciona, donde al igual que con el siguiente no puede hacer el control de solo lectura .
fuente
También hay una ligera diferencia en la salida html para un tipo de datos de cadena.
fuente