Подтвердить что ты не робот

DataAnnotations StringLength Атрибут MVC - без максимального значения

Я использую аннотации данных для проверки модели в MVC4, и в настоящее время я использую StringLengthAttribute, однако я НЕ хочу указывать максимальное значение (в настоящее время установленное значение 50), но НЕ хочу указывать минимальное значение длины строки.

Есть ли способ указывать только минимальную длину? Возможно, другой атрибут, который я могу использовать?

Мой текущий код:

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Confirm New Password")]
    [StringLength(50, MinimumLength = 7)]
    [CompareAttribute("NewPassword", ErrorMessage = "The New Password and Confirm New Password fields did not match.")]
    public string ConfirmNewPassword { get; set; }

Любая помощь очень ценится.

4b9b3361

Ответ 1

Есть ли способ указывать только минимальную длину? Возможно, другое атрибут, который я могу использовать?

Используя стандартную аннотацию данных, №. Вы должны указать максимальную длину. Только другие параметры являются необязательными.

В таком случае я бы рекомендовал что-то вроде этого:

[StringLength(int.MaxValue, MinimumLength = 7)]

Вы также можете использовать атрибут Regex (регулярное выражение), подобный этому:

[RegularExpression(@"^(?:.*[a-z]){7,}$", ErrorMessage = "String length must be greater than or equal 7 characters.")]

Подробнее об этом здесь: Проверка прочности паролей с регулярными выражениями

Ответ 3

Вы думали об удалении аннотаций данных и добавили атрибут Html в элемент Html.TextBoxFor в вашем представлении?

Должен выглядеть примерно так:

@Html.TextBoxFor(model => model.Full_Name, new { htmlAttributes = new { @class = "form-control", @minlength = "10" } })

или

@Html.TextBoxFor(model => model.Full_Name, new { @class = "form-control",  @minlength = "10" } })

10 - минимальная длина, которую вы выберете.

Мне нравится добавлять атрибуты html к моему представлению, так как я могу быстро увидеть, какое влияние оно оказывает. без использования вашей базы данных и не требует, чтобы вы выполняли миграцию и обновление базы данных, если вы используете миграцию (первый подход кода).

просто помните, что когда вы меняете EditorFor на TextBoxFor, вы потеряете свой стиль, но должны быть легко исправить, снова вы можете просто добавить стили к своему представлению или добавить стиль в свой CSS файл.

Надеюсь, что это поможет:)