2010-07-15 20 views
12

que estaba bajo la impresión de que el uso de una anotación de esta manera:.NET MVC enmascaramiento cuadros de texto Contraseña

<Required()> 
<DisplayName("Choose a Password:")> 
<ValidatePasswordLength()> 
<DataType(DataType.Password)> 
Public Property Password As String 

crearía un campo enmascarado cuando se utiliza en la vista:

<%: Html.TextBoxFor(Function(model) model.Password) %> 
<%: Html.ValidationMessageFor(Function(model) model.Password) %> 

Sin embargo, esto se hace sin el tipo = "contraseña"

¿Para qué se utiliza la "Contraseña del tipo de datos" si no es así?

Respuesta

19

Está utilizando Html.TextBoxFor que siempre genera una etiqueta <input type="text"> en el HTML resultante. Si desea que la anotación DataType.Password se cumpla automáticamente, en su lugar debe usar Html.EditorFor. Puede leer más acerca de las plantillas de editor y cómo personalizarlas aquí: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html

+0

Por la misma razón, ¿eso se aplica a los campos que están marcados como DataType.EmailAddress? – ewahner

+0

El método DisplayFor tiene una plantilla predeterminada para EmailAddress. Sin embargo, no hay un editor predeterminado para los correos electrónicos que EditorFor podría usar. Solo usará un cuadro de texto sin formato. Sin embargo, podría escribir una plantilla de editor personalizado. – marcind

26

TextBoxFor anula su anotación porque indica una entrada de texto sin cifrar. Como se mencionó anteriormente, EditorFor respeta la anotación o puede usar PasswordFor para ese campo.

+3

+1 Mucho más simple ... –

+1

muy simple y dulce –

Cuestiones relacionadas