簡體   English   中英

枚舉的JsonConverter屬性打破了asp.net核心模型綁定

[英]JsonConverter attribute on enum breaks asp.net core model binding

我有一個簡單的類,其中包含一個Enum作為屬性:

public class MyClass
{
    public MyEnum Type { get; set; }
    public string Prop1 { get; set; }
    public string Prop2 { get; set; }
}

public enum MyEnum
{
    Something,
    OrOther
}

然后我在asp.net web api中使用它來建模bind:

public async Task<JsonResult> Post([FromBody] MyClass myClass)
{
 //Some exciting controllery type stuff in here....
}

並從Fiddler發布數據:

{
"Type":"0", 
"Prop1":"TestValue",
"Prop2":"MoreTestData"
}

一切都運作良好。 現在我想從Xamarin應用程序內部發布到這個API,所以使用:

var stringData = JsonConvert.SerializeObject(data);

其中data是MyClass的一個實例,但枚舉轉換為整數,而不是其字符串值。 所以經過一些谷歌搜索后,我用它來裝飾enum屬性

public class MyClass
{
    [JsonConverter(typeof(StringEnumConverter))]
    public MyEnum Type { get; set; }
    public string Prop1 { get; set; }
    public string Prop2 { get; set; }
}

現在我的序列化工作正常,值作為枚舉的字符串表示形式,而不是整數值。

但是,當我現在從Fiddler發布時,使用字符串或整數,模型綁定失敗,值為null。

有沒有辦法解決這個問題,以便兩種方案都有效?

謝謝

您還應該將序列化屬性添加到枚舉定義中

[JsonConverter(typeof(StringEnumConverter))]
public enum MyEnum
{
    Something,
    OrOther
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM