Иногда пользовательский ввод не является строго недействительным, но может считаться проблематичным.
Например:
- Пользователь вводит длинное предложение в однострочном поле
Name
. Он, вероятно, должен вместо этого использовали полеDescription
. - Пользователь вводит
Name
, который очень похож на объект существующего объекта. Возможно, он ввел один и тот же объект, но не понимал, что он уже существует, или какой-то пользователь одновременно вошел в него.
Некоторые из них могут быть легко проверены на стороне клиента, некоторые требуют проверки на стороне сервера.
Какой лучший способ, возможно, что-то похожее на проверку DataAnnotations
, для предоставления предупреждений пользователю в таких случаях? Ключевым моментом здесь является то, что пользователь должен быть в состоянии переопределить предупреждение и по-прежнему отправлять форму (или повторно отправить форму, в зависимости от реализации).
Наиболее жизнеспособным решением, которое приходит на ум, является создание некоторого атрибута, аналогичного CustomValidationAttribute
, который может сделать вызов AJAX и отображать некоторый текст предупреждения, но не влияет на ModelState
. Предполагаемое использование:
[WarningOnFieldLength(MaxLength = 150)]
[WarningOnPossibleDuplicate()]
public string Name { get; set; }
В представлении:
@Html.EditorFor(model => model.Name)
@Html.WarningMessageFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
Итак, любые идеи?