2016-08-05 56 views
2

我們正在面對ASP.NET WebAPI的xml搜索存在的多個問題。目前我們使用xmlserializer而不是DataContractSearilizer(這是用於XML序列化的默認序列化方法),有兩個基本原因。ASP.Net Web API Xml searlization問題

  1. DataContractSearlizer我們需要通過對象的所有字段在API到底升序排列,否則越來越空。

  2. 我們還需要在XML頭中傳遞名稱空間以將XML對象傳遞給web api。

因爲我們決定去xmlserializer,而不是DataContractSearlizer這兩個基本的原因。但是現在我們正面臨着另一個在默認DataContractSearilization機制中不存在的問題。讓我們說我們有這樣

[DataContract] 
public class Car 
{ 
    public int ID; 

    [DataMember] 
    public string CarName; 

    [DataMember] 
    public string CarType; 

} 

現在我們的預期,關於客戶端,我們只會收到那些數據成員屬性包圍領域卻不料我們得到的所有字段數據成員屬性是否存在或不存在的對象。這在json searlization中工作得很好,結果就是我們最初的預期。在這方面有人可以幫助我們嗎?

+0

[這](http://stackoverflow.com/questions/1791946/how-can-i-ignore-a-property-when-serializing-using-the-datacontractserializer)可以幫助你 –

回答

1

您可能正在尋找IgnoreDataMember屬性:

當應用於類型的成員,指定該成員是不是數據合同 一部分,而不是序列化。

[DataContract] 
public class Car 
{ 
    [IgnoreDataMember] 
    public int ID; 

    [DataMember] 
    public string CarName; 

    [DataMember] 
    public string CarType; 

} 
+0

我想我已經嘗試過,但它也沒有工作。讓我再試一次。幾分鐘後回到你身邊。 –

+1

哦,等一下 - 嘗試'[XmlIgnore]'因爲你沒有使用DataContractSerializer - 我的速度很快...... –

+0

你太棒了!有用。非常感謝你馬丁 –