【发布时间】:2017-10-03 22:39:42
【问题描述】:
我有一个简单的类,其中包含一个 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 中使用它来建模绑定:
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 的一个实例,但枚举被转换为整数,而不是其字符串值。所以经过一番谷歌搜索后,我用
装饰了枚举属性public class MyClass
{
[JsonConverter(typeof(StringEnumConverter))]
public MyEnum Type { get; set; }
public string Prop1 { get; set; }
public string Prop2 { get; set; }
}
现在我的序列化工作正常,值作为枚举的字符串表示形式出现,而不是整数值。
但是,当我现在从 Fiddler 发布时,使用字符串或整数,模型绑定失败并且值为 null。
有没有办法解决这个问题,让这两种情况都能正常工作?
谢谢
【问题讨论】:
-
能否也添加生成的 JSON(带转换器)?
标签: c# asp.net-mvc enums json.net model-binding