メタデータ メッセージ エラーの検証に Griffin.MvcContrib を使用しています。
正規表現の検証を追加するカスタム検証を追加しました。
protected override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, ControllerContext context, IEnumerable<Attribute> attributes) {
List<ModelValidator> vals = base.GetValidators(metadata, context, attributes).ToList();
//if (metadata.ModelType.Name == "DateTime")
if (metadata.DataTypeName == "telephone") {
DataAnnotationsModelValidationFactory factory;
RegularExpressionAttribute regex = new RegularExpressionAttribute(@"^(((\+?34([ |\-])?)|(\+?\(34\)([ |\-])?))?[9|6|7]((\d{1}([ |\-])?[0-9]{3})|(\d{2}([ |\-])?[0-9]{2}))([ |\-])?[0-9]{2}([ |\-])?[0-9]{2})$");
//regex.ErrorMessage = "Invalid date format";
if (!AttributeFactories.TryGetValue(regex.GetType(), out factory))
factory = DefaultAttributeFactory;
vals.Add(factory(metadata, context, regex));
}
return vals.AsEnumerable();
}
グローバル assax で:
ModelMetadataProviders.Current = new LocalizedModelMetadataProvider(myResouceFile);
ModelValidatorProviders.Providers.Clear();
ModelValidatorProviders.Providers.Add(new LocalizedModelValidatorProvider());
ModelValidatorProviders.Providers.Clear();
ModelValidatorProviders.Providers.Add(new MovilityMetadataValidatorProvider());
リソースには次のキーがあります
CommonPrompts_RegularExpression {0} fu
Phone_RegularExpression {0} fa
RegularExpression Incorrect Format
しかし、それは私にこのメッセージを表示し続けます:
El campo [es-ES: Phone] debe coincidir con la expresión regular '^(((+?34([ |-])?)|(+?(34)([ |-])?))?[9 |6|7]((\d{1}([ |-])?[0-9]{3})|(\d{2}([ |-])?[0-9]{2} ))([ |-])?[0-9]{2}([ |-])?[0-9]{2})$'.
メッセージも追加しました:
AgentDto_Phone_RegularExpression {0} regular
AgentCreateEditViewModel_AgentDto_Phone_RegularExpression {0} regular
運がなければ。
メッセージを変更するには、リソースに何を入力する必要がありますか?