Asp.net mvc 验证程序正在忽略Range属性

Asp.net mvc 验证程序正在忽略Range属性,asp.net-mvc,validation,Asp.net Mvc,Validation,我有以下实体(这是EF生成的实体的一部分): [元数据类型(typeof(ProjectItem\u元数据))] 公共部分类ProjectItem:IIdentified,IValidatableObject { 内部类ProjectItem\u元数据 { [可编辑(假)] 公共int ID{get;set;} 公共int ProjectID{get;set;} public int?ReorderParentID{get;set;} public int LibraryItemID{get;s

我有以下实体(这是EF生成的实体的一部分):

[元数据类型(typeof(ProjectItem\u元数据))]
公共部分类ProjectItem:IIdentified,IValidatableObject
{
内部类ProjectItem\u元数据
{
[可编辑(假)]
公共int ID{get;set;}
公共int ProjectID{get;set;}
public int?ReorderParentID{get;set;}
public int LibraryItemID{get;set;}
[范围(0,double.MaxValue,ErrorMessageResourceType=typeof(资源),ErrorMessageResourceName=“QuantityError”)]
公共整数数量{get;set;}
公共浮点宽度{get;set;}
公共浮动高度{get;set;}
公共浮点深度{get;set;}
公共int-id{get;set;}
公共int?BandingMaterialID{get;set;}
公共浮点MaterialVolume{get;set;}
公用浮球材料重量{get;set;}
公共双EstimatedItemMass{get;set;}
公共浮点表面旋转{get;set;}
}
公共静态类资源
{
私有静态只读IStringProvider _errors=Strings.Current.GetGroup(“ProjectItemErrors”);
//错误
公共静态字符串QuantityError{get{return _names.GetValueOrDefault(“Quantity”,“Quantity”);}
}
公共IEnumerable验证(ValidationContext a_ValidationContext)
{
IStringProvider_errors=Strings.Current.GetGroup(“ProjectItemErrors”);
var libraryItem=libraryItem;
if(libraryItem==null)
{
使用(var context=newyoubuildentities())
libraryItem=context.LibraryItems.SingleOrDefault(i=>i.ID==LibraryItemID);
}
var validationResults=新列表();
if(宽度<库项最小宽度)
Add(新的ValidationResult(_errors.GetValue(“WidthTooSmall”,libraryItem.MinWidth),新字符串[]{“Width”});
如果(宽度>库项最大宽度)
Add(新的ValidationResult(_errors.GetValue(“WidthTooLarge”,libraryItem.MaxWidth),新字符串[]{“Width”});
if(高度<库项最小高度)
Add(新的ValidationResult(_errors.GetValue(“HeightTooSmall”,libraryItem.MinHeight),新字符串[]{“Height”});
如果(高度>库项最大高度)
Add(新的ValidationResult(_errors.GetValue(“HeightTooLarge”,libraryItem.MaxHeight),新字符串[]{“Height”});
if(深度库项最大深度)
Add(新的ValidationResult(_errors.GetValue(“depthttoolarge”,libraryItem.MaxDepth),新字符串[]{“Depth”});
返回验证结果;
}
}
当我调用Validator.TryValidateObject时:

        var results = new List<ValidationResult>();
        if (!Validator.TryValidateObject(_target, new ValidationContext(_target, null, null), results, true))
        {

        }
var results=newlist();
if(!Validator.TryValidateObject(_-target,new-ValidationContext(_-target,null,null),results,true))
{
}
它验证
高度
宽度
深度
,但忽略
数量
。我做错了什么


谢谢。

我只是好奇,为什么在int上使用
double.MaxValue
?这不是定义了一个比你的财产更大的范围吗?是的,我知道。我找到了并修复了它。但它并没有解决这里的问题。我没想到会这样,我只是想知道这是不是故意的。不管怎样,我帮不了你。我不熟悉您使用的验证模式。看起来绕过框架的内置验证上下文绝非易事。祝你好运
        var results = new List<ValidationResult>();
        if (!Validator.TryValidateObject(_target, new ValidationContext(_target, null, null), results, true))
        {

        }