Tôi gặp sự cố với ASP.Net MVC3 (RC2). Tôi nhận thấy rằng chức năng ràng buộc mô hình JSON mới, vốn ẩn chứa trong MVC3, không muốn deserialize thành một thuộc tính có kiểu enum.ASP.Net MVC3 - tại sao hỗ trợ mặc định cho mô hình JSON ràng buộc không giải mã thành các loại enum?
Dưới đây là một lớp học mẫu và enum loại:
public enum MyEnum { Nothing = 0, SomeValue = 5 }
public class MyClass
{
public MyEnum Value { get; set; }
public string OtherValue { get; set; }
}
Xét đoạn mã sau, mà vượt qua thành công các đơn vị kiểm tra:
[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);
}
Nếu tôi serialize obj1
trên, nhưng sau đó gửi dữ liệu đó để một bộ điều khiển MVC3 (ví dụ dưới đây) với một tham số kiểu MyClass, bất kỳ thuộc tính nào khác của đối tượng deserialize đúng, nhưng bất kỳ thuộc tính nào là một kiểu enumialize thành giá trị mặc định (zero).
[HttpPost]
public ActionResult TestAction(MyClass data)
{
return Content(data.Value.ToString()); // displays "Nothing"
}
Tôi đã tải về mã nguồn MVC từ CodePlex nhưng tôi bối rối như nơi mã thực tế thực hiện deserialization xảy ra, có nghĩa là tôi không thể làm việc ra những gì các folks tại Microsoft đã sử dụng để thực hiện việc deserialization và do đó xác định nếu tôi đang làm điều gì đó sai hoặc nếu có một workaround.
Mọi đề xuất sẽ được đánh giá cao.
Tôi đã thêm câu trả lời vào chuỗi này có thể hữu ích. http://stackoverflow.com/questions/6051756/model-binding-to-enums-in-asp-net-mvc-3/9070963#9070963 – Difinity