【发布时间】:2011-01-03 05:24:07
【问题描述】:
我遇到了 ASP.Net MVC3 (RC2) 的问题。我发现 MVC3 中隐含的新 JSON 模型绑定功能不想反序列化为具有枚举类型的属性。
这是一个示例类和枚举类型:
public enum MyEnum { Nothing = 0, SomeValue = 5 }
public class MyClass
{
public MyEnum Value { get; set; }
public string OtherValue { get; set; }
}
考虑以下代码,它成功通过了单元测试:
[TestMethod]
public void Test()
{
var jss = new JavaScriptSerializer();
var obj1 = new MyClass { Value = MyEnum.SomeValue };
var json = jss.Serialize(obj1);
var obj2 = jss.Deserialize<MyClass>(json);
Assert.AreEqual(obj1.Value, obj2.Value);
}
如果我序列化上面的obj1,然后将该数据发布到具有 MyClass 类型的单个参数的 MVC3 控制器(下面的示例),则对象的任何其他属性都会正确反序列化,但任何枚举类型的属性都会反序列化到默认(零)值。
[HttpPost]
public ActionResult TestAction(MyClass data)
{
return Content(data.Value.ToString()); // displays "Nothing"
}
我已经从 codeplex 下载了 MVC 源代码,但我不知道执行反序列化的实际代码发生在哪里,这意味着我无法弄清楚 Microsoft 的人用来执行反序列化的内容,因此确定我做错了什么或是否有解决方法。
任何建议将不胜感激。
【问题讨论】:
-
我在这个线程上添加了一个可能有帮助的答案。 stackoverflow.com/questions/6051756/…
标签: json asp.net-mvc-3