【发布时间】:2018-05-15 01:25:00
【问题描述】:
问题: 我正在尝试手动验证一些 c# 对象,而验证器忽略了与字符串长度相关的验证。
测试用例: 扩展使用 [Required] 属性的this example,我还想验证字符串是否太长,如下所示。
public class Recipe
{
//[Required]
public string Name { get; set; }
[MaxLength(1)] public string difficulty = "a_string_that_is_too_long";
}
public static void Main(string[] args)
{
var recipe = new Recipe();
var context = new ValidationContext(recipe, serviceProvider: null, items: null);
var results = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(recipe, context, results);
if (!isValid)
{
foreach (var validationResult in results)
{
Console.WriteLine(validationResult.ErrorMessage);
}
} else {
Console.WriteLine("is valid");
}
}
预期结果:错误:“难度太长。”
实际结果:'有效'
其他测试的东西:
- 验证器正在工作,取消注释 [Required] 会导致消息“名称字段是必需的”。
- 改为使用 [StringLength](如前所述 https://stackoverflow.com/a/6802739/432976 )没有区别。
【问题讨论】:
-
您可以将
=更改为=>以将其切换为属性
标签: c#