这是 Web API 中的一个已知问题,您可以在此处查看整个历史记录:http:
//aspnetwebstack.codeplex.com/workitem/270
基本上,如果将 [Required] 应用于值类型(例如 bool 或 int,string 不是值类型)就会导致此错误。
你也需要考虑一下——你正在创建int
一个必需的属性——但作为一个值类型,它总是有值,value=0,即使它不是由用户传递的。也许你在想int?
呢?
您可以InvalidModelValidatorProvider
完全删除(虽然这可能是不可接受的):
config.Services.RemoveAll(
typeof(System.Web.Http.Validation.ModelValidatorProvider),
v => v is InvalidModelValidatorProvider);
或者只是将 DataContract 应用于您的课程:
[DataContract]
public class MyClass {
[DataMember(isRequired=true)]
public string AccountTypeID { get; set; }
[DataMember(isRequired=true)]
public int CallerID { get; set; }
}
另一种解决方法,将 int 标记为可为空:
[Required]
public int? CallerID { get; set; }