C# 如何获得财产';从自定义属性中选择显示名称
我正在尝试创建一个最小长度验证属性,该属性将强制用户在文本框中输入指定的最小字符数C# 如何获得财产';从自定义属性中选择显示名称,c#,asp.net,asp.net-mvc-2,data-annotations,C#,Asp.net,Asp.net Mvc 2,Data Annotations,我正在尝试创建一个最小长度验证属性,该属性将强制用户在文本框中输入指定的最小字符数 public sealed class MinimumLengthAttribute : ValidationAttribute { public int MinLength { get; set; } public MinimumLengthAttribute(int minLength) {
public sealed class MinimumLengthAttribute : ValidationAttribute
{
public int MinLength { get; set; }
public MinimumLengthAttribute(int minLength)
{
MinLength = minLength;
}
public override bool IsValid(object value)
{
if (value == null)
{
return true;
}
string valueAsString = value as string;
return (valueAsString != null && valueAsString.Length >= MinLength);
}
}
在MinimumLengthAttribute的构造函数中,我想将错误消息设置如下:
ErrorMessage=“{0}的长度必须至少为{1}个字符”
如何获取属性的显示名称,以便填充{0}占位符?如果错误消息包含多个占位符,则属性也应覆盖该方法,如下所示:
public override string FormatErrorMessage(string name) {
return String.Format(ErrorMessageString, name, MinLength);
}
您应该调用一个构造函数重载来指定属性的默认错误消息:
public MinimumLengthAttribute()
: base("{0} must be at least {1} characters long") {
}
{0}
占位符将自动填充[Display(Name=”“)]
的值,如果[Display(Name=“”)]
属性不存在,则它将采用属性的名称。在分配属性时是否试图避免使用ErrorMessage属性?比如:MinimumLength(ErrorMessage=“电子邮件地址必须至少5个字符长”)是的,我试图避免在分配属性时设置错误消息。验证FormatErrorMessage方法仅在服务器端验证时有效,但在客户端无效。因此,最好设置ErrprMessage属性。