Какой предпочтительный метод (тот, который имеет минимальный пользовательский код и в идеале переносим на запланированные будущие версии MVC без дополнительных виджетов) для проверки общих типов данных (например, адресов электронной почты, дат, телефонных номеров) как на клиенте, так и на клиенте?сервер?
МОИ ИССЛЕДОВАНИЯ
Я собираюсь перечислить несколько методов, которые я видел, примерно от худшего к лучшему (ИМХО).В настоящее время я использую последний метод в списке.Я сосредоточусь на проверке электронной почты в этом посте, чтобы все было понятно.
РЕГИСТРАЦИЯ И / ИЛИ ТАМОЖЕННАЯ АТРИБУТА ВАЛИДАЦИИ
Я знаю, что проверка JQuery включает в себя некоторые общиеТипы данных, включая электронную почту, и дополнительные плагины существуют для загрузки (например, целое число, максимум слов).Так что пользовательские регулярные выражения здесь не правильный ответ.
Я знаю, как написать собственный валидатор с нуля на сервере и клиенте и даже «адаптировать» существующее клиентское правило к пользовательскому атрибуту при использованииненавязчивый разъем.http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html но, вероятно, не имеет смысла для такого распространенного типа, как адрес электронной почты.
И, возможно, расширять правило регулярного выражения в соответствии с: http://www.pagedesigners.co.nz/2011/02/asp-net-mvc-3-email-validation-with-unobtrusive-jquery-validation/
ПЕРЕИГРЫВАЮЩАЯ СТОКОВАЯ ВАЛИДАТОРЫ АТРИБУТА DataType
.NET включает [System.ComponentModel.DataAnnotations.DataType (DataType.EmailAddress)] Это вызывает всегда успешную проверку на клиенте или сервере, и этодействительно полезно только из коробки для тангенциальной цели форматирования отображаемых строк.Переопределение всегда успешной проверки возможно в соответствии с: http://weblogs.asp.net/srkirkland/archive/2011/02/15/adding-client-validation-to-dataannotations-datatype-attribute.aspx
РАСШИРЕНИЕ ВАЛИДАЦИИ ДАННЫХ MVC (VIA NUGET)
Загружаемое расширение проверки NuGet было выпущено несколькомесяцев назад, и я в настоящее время использую его, но я был удивлен, увидев, что он не использует существующее перечисление DataAnnotations.DataType.Это заставляет меня задуматься, есть ли какое-то расхождение в развитии, которого я должен здесь избегать.http://weblogs.asp.net/srkirkland/archive/2011/02/23/introducing-data-annotations-extensions.aspx Кроме того, он не включает номера телефонов или номера телефонов в США.
Есть ли лучший способ?