本地化 – MVC 3中DataAnnotations的默认错误消息的整个列表
|
另一个MVC本地化问题… 我正在尝试本地化ASP.Net MVC 3应用程序使用本地化的资源文件来显示视图中的文本,按照建议. 像往常一样,问题在于尝试从数据注释中本地化默认错误消息. 我知道您可以在每个属性中指定资源文件和密钥: [Required(
ErrorMessageResourceType = typeof(CustomResourceManager),ErrorMessageResourceName = "ResourceKey")]
public string Username { get; set; }
甚至,哪个更好和更喜欢,你可以覆盖默认消息,像这样:Default resource for data annotations in ASP.NET MVC,所以你可以离开属性像: [Required]
public string Username { get; set; }
最后一个方法是我正在关注的一个方法,它可以工作,但只有当您要覆盖的DataAnnotation具有ONE和ONLY一个错误消息时,因为它总是会查找与自定义资源文件中的属性相同的资源密钥(例如“必需”需要资源文件中的“RequiredAttribute”条目) 其他属性,如StringLength,具有多个错误消息,具体取决于您使用的可选参数.所以,如果你有一个模型: public class Person
{
[Required]
[StringLengthLocalizedAttribute(10,MinimumLength = 5)]
[Display(Name = "User name")]
public string UserName { get; set; }
}
错误消息是“用户名字段必须是最小长度为5,最大长度为10的字符串”. 如果将StringLength属性更改为: [StringLengthLocalizedAttribute(10)] 错误消息更改为“字段用户名必须是最大长度为10的字符串.”因此,在这种情况下,至少有2个默认错误消息要覆盖,并且@ kim-tranjan提供的解决方案失败. 我的部分解决方案是实现我自己的StringLength属性,如下所示: public class StringLengthLocalizedAttribute : StringLengthAttribute
{
public StringLengthLocalizedAttribute(int maximumLength) : base(maximumLength)
{
ErrorMessageResourceType = typeof(CustomValidationResource);
}
public override string FormatErrorMessage(string name)
{
ErrorMessageResourceName = MinimumLength > 0 ? "StringLengthAttributeMinMax" : "StringLengthAttributeMax";
return base.FormatErrorMessage(name);
}
}
我有一个本地化资源“CustomValidationResource”与验证消息,并将其设置为ErrorMessageResourceType.然后,重写FormatErrorMessage函数,根据可选参数,我决定应该应用哪个消息字符串. 所以,这里的问题是:有人知道我们可以在哪里找到DataAnnotation Attributes使用的资源密钥的整个列表,然后看看我们在每个不同的测试中有多少不同的错误消息? 或者更好的是,我们可以使用原始的RESX文件来查看字符串模板并使用相同的资源密钥对其进行本地化吗?这样,只需要更改ErrorMessageResourceType即可适用于所有的DataAnnotations Attibutes,我不需要猜测在本地化字符串中放置“{1}”或“{2}”的位置. 谢谢, 解决方法如果您仍在查找验证字符串的概述,可以在下面找到System.ComponentModel.DataAnnotations.Resources.DataAnnotationsResources类中的资源,如Tz_所述:[ArgumentIsNullOrWhitespace,The argument '{0}' cannot be null,empty or contain only white space.]
[AssociatedMetadataTypeTypeDescriptor_MetadataTypeContainsUnknownProperties,The associated metadata type for type '{0}' contains the following unknown properties or fields: {1}. Please make sure that the names of these members match the names of the properties on the main type.]
[AttributeStore_Type_Must_Be_Public,The type '{0}' must be public.]
[AttributeStore_Unknown_Method,The type '{0}' does not contain a public method named '{1}'.]
[AttributeStore_Unknown_Property,The type '{0}' does not contain a public property named '{1}'.]
[Common_NullOrEmpty,Value cannot be null or empty.]
[Common_PropertyNotFound,The property {0}.{1} could not be found.]
[CompareAttribute_MustMatch,'{0}' and '{1}' do not match.]
[CompareAttribute_UnknownProperty,Could not find a property named {0}.]
[CreditCardAttribute_Invalid,The {0} field is not a valid credit card number.]
[CustomValidationAttribute_Method_Must_Return_ValidationResult,The CustomValidationAttribute method '{0}' in type '{1}' must return System.ComponentModel.DataAnnotations.ValidationResult. Use System.ComponentModel.DataAnnotations.ValidationResult.Success to represent success.]
[CustomValidationAttribute_Method_Not_Found,The CustomValidationAttribute method '{0}' does not exist in type '{1}' or is not public and static.]
[CustomValidationAttribute_Method_Required,The CustomValidationAttribute.Method was not specified.]
[CustomValidationAttribute_Method_Signature,The CustomValidationAttribute method '{0}' in type '{1}' must match the expected signature: public static ValidationResult {0}(object value,ValidationContext context). The value can be strongly typed. The ValidationContext parameter is optional.]
[CustomValidationAttribute_Type_Conversion_Failed,Could not convert the value of type '{0}' to '{1}' as expected by method {2}.{3}.]
[CustomValidationAttribute_Type_Must_Be_Public,The custom validation type '{0}' must be public.]
[CustomValidationAttribute_ValidationError,{0} is not valid.]
[CustomValidationAttribute_ValidatorType_Required,The CustomValidationAttribute.ValidatorType was not specified.]
[DataTypeAttribute_EmptyDataTypeString,The custom DataType string cannot be null or empty.]
[DisplayAttribute_PropertyNotSet,The {0} property has not been set. Use the {1} method to get the value.]
[EmailAddressAttribute_Invalid,The {0} field is not a valid e-mail address.]
[EnumDataTypeAttribute_TypeCannotBeNull,The type provided for EnumDataTypeAttribute cannot be null.]
[EnumDataTypeAttribute_TypeNeedsToBeAnEnum,The type '{0}' needs to represent an enumeration type.]
[FileExtensionsAttribute_Invalid,The {0} field only accepts files with the following extensions: {1}]
[LocalizableString_LocalizationFailed,Cannot retrieve property '{0}' because localization failed. Type '{1}' is not public or does not contain a public static string property with the name '{2}'.]
[MaxLengthAttribute_InvalidMaxLength,MaxLengthAttribute must have a Length value that is greater than zero. Use MaxLength() without parameters to indicate that the string or array can have the maximum allowable length.]
[MaxLengthAttribute_ValidationError,The field {0} must be a string or array type with a maximum length of '{1}'.]
[MetadataTypeAttribute_TypeCannotBeNull,MetadataClassType cannot be null.]
[MinLengthAttribute_InvalidMinLength,MinLengthAttribute must have a Length value that is zero or greater.]
[MinLengthAttribute_ValidationError,The field {0} must be a string or array type with a minimum length of '{1}'.]
[PhoneAttribute_Invalid,The {0} field is not a valid phone number.]
[RangeAttribute_ArbitraryTypeNotIComparable,The type {0} must implement {1}.]
[RangeAttribute_MinGreaterThanMax,The maximum value '{0}' must be greater than or equal to the minimum value '{1}'.]
[RangeAttribute_Must_Set_Min_And_Max,The minimum and maximum values must be set.]
[RangeAttribute_Must_Set_Operand_Type,The OperandType must be set when strings are used for minimum and maximum values.]
[RangeAttribute_ValidationError,The field {0} must be between {1} and {2}.]
[RegexAttribute_ValidationError,The field {0} must match the regular expression '{1}'.]
[RegularExpressionAttribute_Empty_Pattern,The pattern must be set to a valid regular expression.]
[RequiredAttribute_ValidationError,The {0} field is required.]
[StringLengthAttribute_InvalidMaxLength,The maximum length must be a nonnegative integer.]
[StringLengthAttribute_ValidationError,The field {0} must be a string with a maximum length of {1}.]
[StringLengthAttribute_ValidationErrorIncludingMinimum,The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.]
[UIHintImplementation_ControlParameterKeyIsNotAString,The key parameter at position {0} with value '{1}' is not a string. Every key control parameter must be a string.]
[UIHintImplementation_ControlParameterKeyIsNull,The key parameter at position {0} is null. Every key control parameter must be a string.]
[UIHintImplementation_ControlParameterKeyOccursMoreThanOnce,The key parameter at position {0} with value '{1}' occurs more than once.]
[UIHintImplementation_NeedEvenNumberOfControlParameters,The number of control parameters must be even.]
[UrlAttribute_Invalid,The {0} field is not a valid fully-qualified http,https,or ftp URL.]
[ValidationAttribute_Cannot_Set_ErrorMessage_And_Resource,Either ErrorMessageString or ErrorMessageResourceName must be set,but not both.]
[ValidationAttribute_IsValid_NotImplemented,IsValid(object value) has not been implemented by this class. The preferred entry point is GetValidationResult() and classes should override IsValid(object value,ValidationContext context).]
[ValidationAttribute_NeedBothResourceTypeAndResourceName,Both ErrorMessageResourceType and ErrorMessageResourceName need to be set on this attribute.]
[ValidationAttribute_ResourcePropertyNotStringType,The property '{0}' on resource type '{1}' is not a string type.]
[ValidationAttribute_ResourceTypeDoesNotHaveProperty,The resource type '{0}' does not have an accessible static property named '{1}'.]
[ValidationAttribute_ValidationError,The field {0} is invalid.]
[ValidationContext_Must_Be_Method,The ValidationContext for the type '{0}',member name '{1}' must provide the MethodInfo.]
[ValidationContextServiceContainer_ItemAlreadyExists,A service of type '{0}' already exists in the container.]
[Validator_InstanceMustMatchValidationContextInstance,The instance provided must match the ObjectInstance on the ValidationContext supplied.]
[Validator_Property_Value_Wrong_Type,The value for property '{0}' must be of type '{1}'.]
(MVC 4,.NET 4.0) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 在VS 2008嵌套母版页中包含对JavaScript的相对引
- asp.net-mvc – 使用没有主键的查找在dbSet中查找记录
- asp.net-mvc – 从ModelMetaData获取另一个属性的值
- asp.net – WebResource.axd空白或找不到
- 自定义每个用户的会话超时 – ASP.NET
- asp.net-mvc – 路由在Asp.net Mvc 4和Web Api
- asp.net-core – 我可以在ASP.net Core 2.0 Preview中的app
- asp.net-mvc-3 – mvc3 httpshttp
- asp.net – 无法CoCreate Profiler错误 – 但不使用分析器
- asp.net – 可能导致XML解析错误:没有找到元素?
- asp.net-mvc – 从MVC Controller导出到CSV,View
- asp.net-mvc-2 – 如何在ASP.NET MVC2中枚举form
- asp.net-mvc – ASP.NET MVC在自定义操作过滤器中
- Asp.net 文件上传类(取得文件后缀名,保存文件,加
- asp.net-mvc – ASP.Net [HiddenInput]数据属性在
- 我应该学习不了解MVC 1或2的asp.NET MVC 3吗?
- asp.net – MVC 3在IEnumerable模型视图中编辑数
- asp.net-web-api – ember-data:根据需要加载ha
- asp.net-mvc – 如何将MEF与ASP.NET MVC 4和ASP.
- ASP.NET MVC删除操作方法中的查询字符串
