【发布时间】:2020-05-02 08:03:25
【问题描述】:
我正在尝试在 ASP.net MVC 应用程序之外使用 DataAnnotation 属性验证。理想情况下,我想在我的控制台应用程序中使用任何模型类并将其装饰如下:
private class MyExample
{
[Required]
public string RequiredFieldTest { get; set; }
[StringLength(100)]
public int StringLengthFieldTest { get; set; }
[Range(1, 100)]
public int RangeFieldTest { get; set; }
[DataType(DataType.Text)]
public object DataTypeFieldTest { get; set; }
[MaxLength(10)]
public string MaxLengthFieldTest { get; set; }
}
然后(伪)做这样的事情:
var item = new MyExample(); // not setting any properties, should fail validation
var isValid = item.Validate();
我在网上的示例中找到了这段代码:
var item = new MyExample(); // not setting any properties, should fail validation
var context = new ValidationContext(item, serviceProvider: null, items: null);
var errorResults = new List<ValidationResult>();
// carry out validation.
var isValid = Validator.TryValidateObject(item, context, errorResults);
// isValid will be FALSE
这给了我“isValid = false”但它似乎只支持Required 字段并忽略其他字段。
以下代码在我期望它返回false时返回isValid = true:
var item = new MyExample() {
RequiredFieldTest = "example text"
};
var context = new ValidationContext(item, serviceProvider: null, items: null);
var errorResults = new List<ValidationResult>();
// carry out validation.
var isValid = Validator.TryValidateObject(item, context, errorResults);
// isValid will be TRUE - not expected behavior
使用属性(字符串长度、范围、最大长度、数据类型等)的所有其他验证尝试都通过有效。
有没有人见过这种行为或知道为什么会这样?
【问题讨论】:
标签: c# asp.net-mvc validation data-annotations modelstate