Tengo este problema en mi aplicación asp.net mvc.Los nuevos caracteres de línea en el área de texto aumentan la longitud del texto en C#
En uno de mis modelos hay un campo "Descripción". La columna de la base de datos para este campos está configurada en NVarchar(300)
.
En mi opinión, estoy creando un área de texto de la siguiente manera.
@Html.TextAreaFor(m => m.Description, new { maxlength = "300" })
estoy usando "jquery.validate.unobtrusive.min.js" para la validación del lado del cliente. Por lo tanto, cuando el usuario escribe en el área de texto y la longitud del contenido supera los 300 caracteres, muestra el mensaje "Ingrese no más de 300 caracteres".
Todo funciona bien hasta que llegue el siguiente sceanario. El usuario ingresa los siguientes datos en el área de texto.
f
f
f
f
f
f
f
f
sdfa
(este contenido tiene 8 nuevas líneas)
Según validación "discreto" Este contenido se longitud 300 (contando cada nueva línea "\ n" como un solo carácter) por lo que la validación pasa y publicaciones de la página de vuelta.
En mi código C#, debido a la codificación, el mismo contenido se convierte en fo longitud 308 (contando cada nueva línea "\ r \ n" como 2 caracteres) que a su golondrina error en la operación de base de datos, ya que sólo permite 300 caracteres.
Si alguien dice que debería tener el atributo StringLength
en esta propiedad en particular, tengo la siguiente razón para no tenerlo.
Si pongo este atributo, la validación del lado del cliente no ocurre para esta propiedad en particular, va al servidor y dado que el modelo no es válido, vuelve a la página con un mensaje de error.
Por favor, ¿cuál es la posible solución?
La división no funcionó para mí. Tuve un problema con los saltos de línea finales, que no se contabilizaron con su método. Utilicé esto en su lugar: '// reemplaza los caracteres de nueva línea con 2 espacios para que el recuento coincida con el del servidor. var replacedValue = value.replace (/ (\ n)/gm, ""); return replacedValue.length; ' Nota: el bloque de código de alguna manera muestra solo un espacio donde debería haber dos. – Ben