У меня проблемы с использованием JavaScript для проверки на стороне клиента при использовании аннотаций данных в модели. Вот пример модели, которая прекрасно работает с двумя обязательными полями, за которыми следует выдаваемый JavaScript:
public class LoginUserViewModel
{
[Required(ErrorMessage = "Email required")]
public string EmailAddress { get; set; }
[Required(ErrorMessage="Password required")]
public string Password { get; set; }
}
}
//<![CDATA[
if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; }
window.mvcClientValidationMetadata.push({"Fields":[{"FieldName":"EmailAddress","ReplaceValidationMessageContents":true,"ValidationMessageId":"form0_EmailAddress_validationMessage","ValidationRules":[{"ErrorMessage":"Email required","ValidationParameters":{},"ValidationType":"required"}]},{"FieldName":"Password","ReplaceValidationMessageContents":true,"ValidationMessageId":"form0_Password_validationMessage","ValidationRules":[{"ErrorMessage":"Password required","ValidationParameters":{},"ValidationType":"required"}]}],"FormId":"form0","ReplaceValidationSummary":false});
//]]>
как только я поместил другой атрибут в поле EmailAddress, атрибут регулярного выражения, в JavaScript больше не было правил Обратите внимание, что в JavaScript ниже есть только пустой массив, где должны быть правила. Вот изменение и сценарий. Есть идеи?
public class LoginUserViewModel
{
[Required(ErrorMessage = "Email required")]
[RegularExpression(@"^[a-z0-9]+([-+\.]*[a-z0-9]+)*@[a-z0-9]+([-\.][a-z0-9]+)*{2,4}$", ErrorMessage = "Invalid email format")]
public string EmailAddress { get; set; }
[Required(ErrorMessage="Password required")]
public string Password { get; set; }
}
//<![CDATA[
if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; }
window.mvcClientValidationMetadata.push({"Fields":[{"FieldName":"EmailAddress","ReplaceValidationMessageContents":true,"ValidationMessageId":"form0_EmailAddress_validationMessage","ValidationRules":[]},{"FieldName":"Password","ReplaceValidationMessageContents":true,"ValidationMessageId":"form0_Password_validationMessage","ValidationRules":[{"ErrorMessage":"Password is required.","ValidationParameters":{},"ValidationType":"required"}]}],"FormId":"form0","ReplaceValidationSummary":false});
//]]>
Есть идеи, что заставляет правила исчезать при добавлении нового атрибута?
Спасибо!