Jop*_*per 14 validation asp.net-mvc-3
我有这样的属性,它检查最小和最大字符串长度:
[StringLength(10, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 3)]
public string PropertyName {get; set;}
Run Code Online (Sandbox Code Playgroud)
基本上它是在默认的asp.net mvc 3.0模板中声明的方式(它们只有最大值100).
因此,如果字符串包含少于3个字符,则显示错误消息将是
"The PropertyName must be at least 3 characters long."
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下我没有看到任何问题
但是如果字符串长度超过10,显示消息仍然是
"The PropertyName must be at least 3 characters long."
Run Code Online (Sandbox Code Playgroud)
所以现在变得不正确了
但是,如果我将消息模板更改为类似的东西:
[StringLength(10, ErrorMessage = "The {0} must be at least {2} characters long and maximum {1} characters long", MinimumLength = 3)]
Run Code Online (Sandbox Code Playgroud)
两种情况的错误消息都是这样的:
"The PropertyName must be at least 3 characters long and maximum 10 characters long"
Run Code Online (Sandbox Code Playgroud)
它也不是那么好
1)信息很长
2)最好为每个案例显示单独的信息,问题是我怎么能做帽子?
有什么方法可以显示两条不同的消息,一条消息,如果长度小于最小值,另一条消息长度大于最大值?
我能看到的只有一个办法解决这个问题是宣布两个独立的StringLength
属性,一会检查最小的另一个最大,但它是不可能的方法添加两个相同的属性,还我会去MinLength
和MaxLength
属性,但它们不产生不显眼的属性.所以看起来我应该编写自定义验证属性
但是,如果可能的话,在每个案例(最小和最大)上显示一个StringLength
验证属性的两个不同消息会很棒,你怎么看?
doh*_*ivu 24
您可以使用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; }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20555 次 |
最近记录: |