我得到以下異常試圖通過WCF傳遞對象:與枚舉原因WCF DataContract類「「枚舉值‘-1’是類型無效」錯誤
有試圖序列化錯誤參數http://tempuri.org/:item。 InnerException消息是'枚舉值'-1'對'Models.SubModels.DamageLocations'類型無效,無法序列化。如果類型具有DataContractAttribute屬性,請確保存在必要的枚舉值並使用EnumMemberAttribute屬性標記''。有關更多詳細信息,請參閱InnerException。
它的定義是這樣的:
[DataContract]
public class Property
{
[DataMember]
public PropertyDamage Damage { get; set; }
public Property()
{
this.Damage = new PropertyDamage();
}
}
而且PropertyDamage
:
[DataContract]
public enum DamageLocations
{
[EnumMember]
Unknown=0,
[EnumMember]
Front,
[EnumMember]
Rear
}
[DataContract]
public class PropertyDamage
{
[Display(Name="Location of Damage:")]
[DataMember(IsRequired=true)]
public DamageLocations DamageLocation { get; set; }
}
編輯 - 這也導致了同樣的錯誤:
public enum DamageLocations
{
Unknown=0,
Front=1,
Rear=2
}
編輯2 - 添加了一個默認值ctor中的枚舉沒有改變錯誤:
public PropertyDamage()
{
this.DamageLocation = DamageLocations.Unknown; //0
}
試圖研究這個問題,我看到人們得到一個類似的錯誤「枚舉值'0'是無效的」,並且解決方案是將一個0添加到枚舉。
雖然我已經有一個0項,並且錯誤狀態-1是無效的。
解決此問題的正確方法是什麼?
edit3 - 看起來-1是來自帖子數據,這是提交頁面的帖子數據。
Damage.DamageLocation=-1
是你傳遞一個有效的枚舉的字段值?你可以嘗試向前後添加值嗎? – 2012-01-18 16:27:48
它收到的價值是多少?我的猜測是有人使用-1作爲「未知/其他/所有/沒有/某事 - 其他」 – 2012-01-18 16:29:28
@TomislavMarkovski是的,我試圖設置值。請參閱編輯。雖然同樣的錯誤。 – asawyer 2012-01-18 16:29:33