【问题标题】:Web API OData ignore properties added by client-sideWeb API OData 忽略客户端添加的属性
【发布时间】:2014-10-10 14:31:47
【问题描述】:

当我使用 WebApi Odata v4 向我的服务器调用 Put 时出现错误。

{
    "error": {
        "code": "",
        "message": "The request is invalid.",
        "innererror": {
            "message": "job : The property 'test' does not exist on type 'Model.Temp'. Make sure to only use property names that are defined by the type.\r\n",
            "type": "",
            "stacktrace": ""
        }
    }
}

发生此错误是因为模型“Temp”中未设置属性“test”。它实际上是由javascript添加的,并且只在客户端使用

如何让 OData 忽略模型中不可用的属性?

【问题讨论】:

    标签: odata asp.net-web-api2


    【解决方案1】:

    有一种方法可以处理您的情况。不是忽略属性,而是通过将实体类型定义为开放类型来接受它们,以便它可以接受来自客户端的模型中未定义的动态属性,并在必要时将它们存储起来以备将来查询。

    您可以找到以下实现开放类型支持的教程:http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/use-open-types-in-odata-v4

    【讨论】:

    • 谢谢。虽然这意味着我需要再添加一个属性,但我现在可以接受这个解决方案。如果有办法将其作为配置进行,也许会更好
    • @Habibi & Yi Ding,我不认为在这里“开实体”是正确的选择。您根本不应该发送值并期望服务器忽略它们。开放实体应该保留动态属性,而不是忽略它们。以我的拙见,我认为虽然提议的解决方案会奏效,但对于服务来说这是一个糟糕的设计。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    相关资源
    最近更新 更多