2015-06-08 103 views
-4

我有一個MVC的Web應用程序,在JavaScript級別使用Angular。我試圖做一個HTTP請求與對象,看起來與此類似:Http請求發送子類型

public class Template 
{ 
    public string Id { get; set; } 
    //other properties 
    public Enum Status { get; set; } //can be either of type InboundEnum or OutboundEnum 
} 

的問題是,我有兩個可能的Enum類型(一個叫InboundEnum和一個叫OutboundEnum)。通常,當我使用角度的$http.post()時,請求會正確地將其他JSON轉換爲正確的Enum值,因爲它具有特定的Enum(如InboundEnum)。

兩個Enums

public enum InboundEnum 
{ 
    Undefined = 0, 
    Deleted, 
    Saved, 
    Pending, 
    Completed, 
    Cancelled 
}; 

public enum OutboundEnum 
{ 
    Undefined = 0, 
    Deleted, 
    Saved, 
    Rejected, 
    InTransit, 
    Completed, 
    Cancelled 
}; 

目前,JavaScript對象我送看起來像這樣:

{ 
    id: 'Id001`, 
    status: 'Saved' //I know it's currently ambiguous which enum to use. Solution? 
} 

我怎樣才能獲得正確類型值到MVC API控制器(如InboundEnum.SavedOutboundEnum.Canceled)?有沒有更好的方法來處理Enum的正確類型,而不是附加Template.EnumType屬性,並使用switch語句來獲得正確的Enum

如果我有反模式,請讓我知道。

回答

1

如果您可以在您的應用程序中使用JSON.NET,那麼它可以解決您的問題。您不必在請求中傳遞枚舉類型,但必須在服務器端的模型中指定某些屬性。

public class Template 
{ 
    public string Id { get; set; } 
    //other properties 
    [JsonConverter(typeof(StringEnumConverter))] 
    public Enum Status { get; set; } 
} 
+0

對不起,讓我更清楚。我的問題是'Status'可以是在客戶端javascript級別已知的兩種不同類型_中的一種。我將編輯我的問題來解決這個問題。 – ryanyuyu

+0

但是,JSON.NET是一個選項。 – ryanyuyu

+0

在這種情況下,您肯定需要知道什麼是枚舉類型,以便您可以嘗試相應地解析它。 – ShankarSangoli