根据 docs, IgnoreDataMember 属性只应在序列化期间考虑。
然而,据我所见,MVC 模型绑定也在 * de * json 序列化期间使用它。
考虑以下类:
public class Tax
{
public Tax() { }
public int ID { get; set; }
[Required]
[Range(1, int.MaxValue)]
[IgnoreDataMember]
public int PropertyId { get; set; }
}
如果将以下 json 字符串 POST/PUT 到操作方法:
{"Position":0,"Description":"State sales tax","Rate":5,"RateIsPercent":true,"PropertyId":1912}
我收到以下验证错误:
{
"Message": "The request is invalid.",
"ModelState": {
"newTax.PropertyId": [
"The field PropertyId must be between 1 and 2147483647."
]
}
}
[Range(1, int.MaxValue)]
和[Required]
属性均无效。
如果我删除该[IgnoreDataMember]
属性,一切正常。
是否可以使用不同的属性来告诉 MVC 绑定在反序列化期间不要忽略该属性?
这仅在发布 json 字符串时发生。如果我发布名称/值字符串,一切正常。