【问题标题】:DataAnnotation for Required property - Why is it required for asp.net webapi?必需属性的 DataAnnotation - 为什么 asp.net webapi 需要它?
【发布时间】:2013-05-22 22:36:43
【问题描述】:

我阅读了这些帖子

DataAnnotation for Required property

http://forums.asp.net/t/1835627.aspx/1

我知道这与 xml 和不支持 required 有关,但我不明白为什么这是一个问题。

我有一个View Model,它在Guid 上具有Required 属性,这就是导致问题的原因。我只是不明白 xml 是如何影响这一点的,因为 requestREST 所以 xml 是在哪里发挥作用导致这个问题的。

【问题讨论】:

    标签: asp.net-web-api data-annotations datacontract


    【解决方案1】:

    验证器是作为安全措施添加的,因为默认情况下所有 Web API 都接受 XML。而且由于 XML 格式化程序不会因缺少必需成员而引发模型状态错误,因此您最终可能会遇到缺少必需成员但模型状态有效的情况。

    话虽如此,这种行为造成的麻烦比它的价值要多得多。所以它在当前的夜间构建中消失了,并且不会在下一个版本的 Web API 中出现。同时,您可以使用以下行禁用它:

    config.Services.RemoveAll(typeof(System.Web.Http.Validation.ModelValidatorProvider),v => v is InvalidModelValidatorProvider);
    

    【讨论】:

    • 嗯。因此,我应该将数据合同用于Required,还是现在最好的方法是什么。我在使用 xml 时遇到了很多麻烦(即将发布另一个问题)
    • 如果您确实需要该属性,那么您应该使用数据协定属性和[DataMeber(IsRequired=true)]。如果您在 XML 中缺少该成员时没有引发任何错误,您可以随时使用上面的行。
    猜你喜欢
    • 2012-08-31
    • 2015-02-04
    • 2012-01-22
    • 2019-08-07
    • 2018-04-13
    • 2017-06-19
    • 1970-01-01
    • 2017-12-28
    • 2010-09-23
    相关资源
    最近更新 更多