¿Cuál es la diferencia en el comportamiento [MaxLength]
y los [StringLength]
atributos?
Por lo que puedo decir (con la excepción de que [MaxLength]
puede validar la longitud máxima de una matriz), ¿son idénticos y algo redundantes?
asp.net-mvc-3
ef-code-first
entity-framework-4.1
Nick Goloborodko
fuente
fuente
Respuestas:
MaxLength se usa para Entity Framework para decidir qué tan grande hacer un campo de valor de cadena cuando crea la base de datos.
De MSDN:
StringLength es una anotación de datos que se utilizará para validar la entrada del usuario.
De MSDN:
fuente
MaxLengthAttribute
, mientras que EF sí reconoceStringLengthAttribute
[MaxLength]
tiene un mensaje de error entonces?Alguna información adicional rápida pero extremadamente útil que acabo de aprender de otra publicación, pero parece que no puedo encontrar la documentación (si alguien puede compartir un enlace en MSDN sería increíble):
Los mensajes de validación asociados con estos atributos en realidad reemplazarán los marcadores de posición asociados con los atributos. Por ejemplo:
Producirá lo siguiente si supera el límite de caracteres: "La dirección puede tener un máximo de 100 caracteres"
Los marcadores de posición que conozco son:
Muchas gracias a bloudraak por señalar esto inicialmente.
fuente
Los siguientes son los resultados cuando usamos ambos
[MaxLength]
y[StringLength]
atributos, enEF code first
. Si se usan ambos,[MaxLength]
gana la carrera. Vea el resultado de la prueba en lastudentname
columna de la clase a continuaciónfuente
Todas buenas respuestas ... Desde la perspectiva de la validación, también noté que MaxLength se valida solo en el lado del servidor, mientras que StringLength también se valida en el lado del cliente.
fuente
MaxLengthAttribute significa Max. longitud de la matriz o datos de cadena permitidos
StringLengthAttribute significa Min. y max. longitud de caracteres permitidos en un campo de datos
Visite http://joeylicc.wordpress.com/2013/06/20/asp-net-mvc-model-validation-using-data-annotations/
fuente
Otro punto a tener en cuenta es en el atributo MaxLength , solo puede proporcionar el rango máximo requerido, no un rango mínimo requerido. Mientras estés en StringLength puedes proporcionar ambos .
fuente
Lo resolví agregando la siguiente línea en mi contexto:
De alguna manera,
[MaxLength]
no funcionó para mí.fuente
Cuando se usa el atributo para restringir la longitud máxima de entrada para el texto de un formulario en una página web, StringLength parece generar el atributo html maxlength (al menos en mi prueba con MVC 5). El que elija luego depende de cómo desea alertar al usuario de que esta es la longitud máxima del texto. Con el atributo stringlength, el usuario simplemente no podrá escribir más allá de la longitud permitida. El atributo maxlength no agrega este atributo html, en su lugar genera atributos de validación de datos, lo que significa que el usuario puede escribir más allá de la longitud indicada y que evitar una entrada más larga depende de la validación en JavaScript cuando se mueve al siguiente campo o hace clic en enviar (o si javascript está deshabilitado, validación del lado del servidor). En este caso, el usuario puede ser notificado de la restricción mediante un mensaje de error.
fuente