Новые символы строки в текстовой области увеличивают длину текста в C#

У меня есть эта проблема в моем приложении 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для этого конкретного свойства, у меня есть следующая причина его отсутствия.

Если я поставлю этот атрибут, проверка на стороне клиента -для этого конкретного свойства не произойдет, оно будет отправлено на сервер, и, поскольку модель недействительна, оно вернется на страницу с сообщением об ошибке.

Подскажите, пожалуйста, какое может быть решение для этого?

10
задан tereško 28 June 2012 в 10:58
поделиться