WebAPI中的模型绑定和验证

时间:2015-07-17 10:16:44

标签: c# validation asp.net-web-api asp.net-web-api2 model-binding

装订

当我尝试通过

发布模型时
[HttpPost]
public IHttpActionResult DoPost(MyModel model)

使用简单的模型

public class MyModel 
{
    public string Property{ get; set; }
}

然后模型没有被正确绑定。它会被实例化,但MyModel.Propertynull。唯一有帮助的是将模型定义为[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; }
}

这看起来很尴尬,我不想对我的所有模特都这样做。请帮忙。

0 个答案:

没有答案