![](/img/trans.png)
[英]WebApi data annotation validation not occuring for complex type parameter properties
[英]Data annotation to allow only whole numbers for long data type properties
我有一个类如下,
public class MyClass
{
[Required]
public string Name { get; set; }
[Required]
[Range(1, Int64.MaxValue)]
public long Volume{ get; set; }
}
并在控制器动作中使用了上述类。
[HttpPost]
public void testAction(, MyClass myClass)
{
var state = ModelState.IsValid;
}
传递控制器操作的 json 输入
输入类型 1:{
"Name":"SomeName",
"Volume":12.2
}
无模态验证失败,输入数据映射 Volume 属性为 12。
输入类型 2:{
"Name":"SomeName",
"Volume": "12.2"
}
模型验证错误,“将值“12.2”转换为类型“System.Int64”时出错。”
我想要相同的模型验证失败错误,即使输入提供为 "Volume":12.2
如何实现这一目标?
提前致谢。
您可以创建自己的ValidationAttribute
。
(inputVal % 1) == 0
确保输入值不是浮点数。
public class RangeCustomerAttribute : ValidationAttribute
{
public long MaxValue { get; set; }
public long MinValue { get; set; }
public RangeCustomerAttribute(long minVal, long maxVal)
{
MaxValue = maxVal;
MinValue = minVal;
}
public override bool IsValid(object value)
{
int inputVal;
if (value == null)
return false;
if (int.TryParse(value.ToString(), out inputVal))
{
if (inputVal >= MinValue && inputVal <= MaxValue)
return (inputVal % 1) == 0;
}
return false;
}
}
使用喜欢
public class MyClass
{
[Required]
public string Name { get; set; }
[Required]
[RangeCustomer(1, Int64.MaxValue)]
public long Volume{ get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.