gpt4 book ai didi

.net - 如何替换标准 DataAnnotations 错误消息

转载 作者:行者123 更新时间:2023-12-04 10:22:05 31 4
gpt4 key购买 nike

我正在使用 System.ComponontModel.DataAnnotations 来验证我的模型对象。如何替换消息标准属性(Required 和 StringLength)而不为每个消息提供 ErrorMessage 属性或对它们进行子类化?

最佳答案

写新帖子是因为我需要比评论提供的更多格式。

验证属性 - 验证属性的基类。

如果发生验证错误,将通过方法创建错误消息:

public virtual string FormatErrorMessage(string name)
{
return string.Format(CultureInfo.CurrentCulture, this.ErrorMessageString, new object[] { name });
}

接下来看 ErrorMessageString 属性(property):
protected string ErrorMessageString
{
get
{
if (this._resourceModeAccessorIncomplete)
{
throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, DataAnnotationsResources.ValidationAttribute_NeedBothResourceTypeAndResourceName, new object[0]));
}
return this.ResourceAccessor();
}
}

属性(property) 资源访问器 可以从以下设置:
ValidationAttribute..ctor(Func<String>)
ValidationAttribute.set_ErrorMessage(String) : Void
ValidationAttribute.SetResourceAccessorByPropertyLookup() : Void

首先,派生类完全使用它来格式化消息,其次 - 当我们通过 设置错误消息时的情况错误信息 属性,第三个 - 使用资源字符串时。
根据您的情况,您可以使用 ErrorMessageResourceName .

在其他地方,让我们看看派生构造函数,例如,范围属性:
private RangeAttribute()
: base((Func<string>) (() => DataAnnotationsResources.RangeAttribute_ValidationError))
{
}

这里 RangeAttribute_ValidationError 从资源加载:
internal static string RangeAttribute_ValidationError
{
get
{
return ResourceManager.GetString("RangeAttribute_ValidationError", resourceCulture);
}
}

因此,您可以为不同的棕褐色默认文化创建资源文件并覆盖那里的消息,如下所示:

http://www.codeproject.com/KB/aspnet/SatelliteAssemblies.aspx

http://msdn.microsoft.com/en-us/library/aa645513(VS.71).aspx

关于.net - 如何替换标准 DataAnnotations 错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2176663/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com