2014-10-10 53 views
0

當我使用WebApi Odata v4調用服務器時,出現錯誤。Web API OData忽略客戶端添加的屬性

{ 
    "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將忽略模型中不可用的屬性?

回答

1

有一種方法可以處理您的情況。不要忽略這些屬性,而是通過將實體類型定義爲開放類型來接受它們,以便它可以接受動態屬性,這些動態屬性在客戶端模型中未定義,並在必要時存儲以供將來查詢。

你可以找到實現一個開放型的支持下面的教程:http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/use-open-types-in-odata-v4

+0

感謝。雖然這意味着我需要添加一個屬性,但我現在可以接受此解決方案。 也許它可能會更好,如果有辦法做到這一點作爲配置 – Habibi 2014-10-11 10:45:36

+1

@Habibi&易丁,我不認爲「打開一個實體」在這裏是正確的選擇。你不應該發送值,並期望服務器忽略它們。開放實體應該堅持動態屬性,而不是忽略它們。我認爲,儘管提出的解決方案可行,但對於服務來說這是一個糟糕的設計。 – gdoron 2014-10-12 00:52:17