У меня есть эта проблема в моем приложении asp.net mvc.
В одной из моих моделей есть поле "Описание". Столбец базы данных для этих полей имеет значение NVarchar(300)
.
На мой взгляд, я создаю текстовую область следующим образом.
@Html.TextAreaFor(m => m.Description, new { maxlength = "300" })
Я использую "jquery.validate.unobtrusive.min.js" для проверки на стороне клиента. Поэтому, когда пользователь вводит текстовое поле и длина содержимого превышает 300 символов, отображается сообщение «Пожалуйста, введите не более 300 символов».
Все работает нормально, пока не появится следующий сценарий. Пользователь вводит следующие данные в текстовую область.
f
f
f
f
f
f
f
f
sdfa
(это содержание имеет 8 новых строк)
Согласно «ненавязчивой» проверке этот контент имеет длину 300(считая каждую новую строку "\n" одним символом)поэтому проверка проходит, и страница публикуется обратно.
В моем коде C #из-за кодировки один и тот же контент становится длиной 308 (. Каждая новая строка "\r\n" считается как 2 символа)который, в свою очередь, не работает с базой данных, поскольку позволяет использовать только 300 символов.
Если кто-то говорит, что я должен иметь атрибут StringLength
для этого конкретного свойства, у меня есть следующая причина его отсутствия.
Если я поставлю этот атрибут, проверка на стороне клиента -для этого конкретного свойства не произойдет, оно будет отправлено на сервер, и, поскольку модель недействительна, оно вернется на страницу с сообщением об ошибке.
Подскажите, пожалуйста, какое может быть решение для этого?