在使用模型上的数据注释时,我在javascript发出的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});
//]]> 

一旦我将另一个属性放在电子邮件address字段(正则表达式属性)上,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});
//]]> 

有什么想法是什么导致规则添加时消失的是什么?

谢谢!

有帮助吗?

解决方案

经过进一步调查,问题在于您的正则表达式被打破,因为您已将两个量化器背靠背指定:

parsing "[a-z0-9]+([-+\.]*[a-z0-9]+)*@[a-z0-9]+([-\.][a-z0-9]+)*{2,4}"
- Nested quantifier {.

所有规则似乎消失的原因是因为CLR吞咽了属性构造函数的异常,只是告诉您“对不起,这里没有属性”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top