gpt4 book ai didi

c# - 枚举上的 JsonConverter 属性打破了 asp.net 核心模型绑定(bind)

转载 作者:行者123 更新时间:2023-11-30 16:44:15 26 4
gpt4 key购买 nike

我有一个简单的类,它包含一个 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);

其中数据是 MyClass 的一个实例,但枚举被转换为一个整数,而不是它的字符串值。因此,经过一些谷歌搜索后,我用

装饰了枚举属性
public class MyClass
{
[JsonConverter(typeof(StringEnumConverter))]
public MyEnum Type { get; set; }
public string Prop1 { get; set; }
public string Prop2 { get; set; }
}

现在我的序列化工作正常,值作为枚举的字符串表示形式出现,而不是整数值。

但是,当我现在使用字符串或整数从 Fiddler 发布时,模型绑定(bind)失败并且值为空。

有没有办法解决这个问题,使两种情况都能正常工作?

谢谢

最佳答案

您还应该将序列化属性添加到您的枚举定义中

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

关于c# - 枚举上的 JsonConverter 属性打破了 asp.net 核心模型绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43805093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com