我正在传递以下xml
<PolicyNumber>6456365A1</PolicyNumber>
<EffectiveDate>2015-10-01T00:00:00</EffectiveDate>
<ExpirationDate>2016-10-01T00:00:00</ExpirationDate>
通过fiddler post来分类。但是下面的类中的值
[DataContract]
public class Parameter
{
[DataMember]
public string PolicyNumber { get; set; }
[DataMember]
public DateTime EffectiveDate { get; set; }
[DataMember]
public DateTime ExpirationDate { get; set; }
}
策略编号的值按预期传递.DateTime的值未传递,而是具有默认值。我使用fiddler将它发布到web api mvc。
答案 0 :(得分:1)
您可以简单地将其设为仅用于序列化的私有成员。
[DataContract]
public class AutoIDCardParameter
{
[DataMember(Name = "PolicyNumber")]
public string PolicyNumber;
[DataMember(Name = "EffectiveDate")]
private string _EffectiveDate {
get {
return EffectiveDate.ToString("yyyy-MM-DDTHH:mm:ss");
}
set {
DateTime.TryParse(value, out EffectiveDate);
}
}
public DateTime EffectiveDate;
// ....
}
答案 1 :(得分:1)
这里的顺序错了。 DataContractSerializer
将使用字母顺序,除非您另行指定(请参阅the docs),因此期望EffectiveDate
,ExpirationDate
,然后PolicyNumber
。
您需要重新排列XML以使其符合顺序,或者您需要通过属性指定类的顺序:
[DataContract]
public class Parameter
{
[DataMember(Order = 0)]
public string PolicyNumber { get; set; }
[DataMember(Order = 1)]
public DateTime EffectiveDate { get; set; }
[DataMember(Order = 2)]
public DateTime ExpirationDate { get; set; }
}