装订
当我尝试通过
发布模型时[HttpPost]
public IHttpActionResult DoPost(MyModel model)
使用简单的模型
public class MyModel
{
public string Property{ get; set; }
}
然后模型没有被正确绑定。它会被实例化,但MyModel.Property
为null
。唯一有帮助的是将模型定义为[DataContract],根据所有文档通常似乎不需要(例如here)
由于我希望实际表示与属性名称不同,因此我使用数据成员的名称。此外,我希望该字段是必填字段:
[DataContract]
public class MyModel
{
[DataMember(Name="property", IsRequired=true)]
public string Property{ get; set; }
}
验证
现在,如果我尝试使用ActionFilterAttribute
验证模型,则会忽略该属性的IsRequired属性。唯一有效的是[Required]
:
[DataContract]
public class MyModel
{
[DataMember(Name="property")]
[Required]
public string Property{ get; set; }
}
这会导致下一个问题! RequiredAttribute
会忽略Name="property"
,并且需要名为Property
的属性,因此如果发布{ "property": "foo" }
所以我最终得到的是:
[DataContract]
public class MyModel
{
[DataMember(Name="property")]
[DisplayName("property")]
[Required]
public string Property{ get; set; }
}
这看起来很尴尬,我不想对我的所有模特都这样做。请帮忙。