我有这样的属性,它检查最小和最大字符串长度:
[StringLength(10, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 3)]
public string PropertyName {get; set;}
基本上它是在默认的asp.net mvc 3.0模板中声明的方式(它们只有最大值100)。
因此,如果字符串包含少于3个字符,则显示错误消息将为
"The PropertyName must be at least 3 characters long."
所以在这种情况下我没有看到任何问题
但如果字符串长度超过10,则显示消息仍然是
"The PropertyName must be at least 3 characters long."
所以它现在变得不正确了
但是,如果我将消息模板更改为类似的内容:
[StringLength(10, ErrorMessage = "The {0} must be at least {2} characters long and maximum {1} characters long", MinimumLength = 3)]
两种情况的错误信息都是这样的:
"The PropertyName must be at least 3 characters long and maximum 10 characters long"
它并不是那么好
1)消息是长的
2)最好为每个案例显示单独的信息,所以问题是我怎么能做帽子?
我有什么方法可以显示两条不同的消息,如果长度小于最小值,则一条消息,另一条消息长度大于最大值?
我只能看到一种解决方法是声明两个单独的StringLength
属性,一个会检查最小值,另一个最大值但是不可能在方法上添加两个相同的属性,我也会用{ {1}}和MinLength
属性,但它们不会产生不显眼的属性。所以看起来我应该编写自定义验证属性
但如果可能的话,在每个案例(最小值和最大值)上显示一个MaxLength
验证属性的两条不同消息会很棒,你觉得怎么样?
答案 0 :(得分:23)
您可以使用MinLength,MaxLength属性。它比两个StringLength属性
更清晰[MinLength(3, ErrorMessage="The {0} must be at least {2} characters long")]
[MaxLength(10, ErrorMessage="The {0} must be maximum {2} characters long")]
public string PropertyName { get; set; }