ASP.Net MVC3(RC2)に問題があります。私はMVC3で暗黙の新しいJSONモデルのバインディング機能は、列挙型を持つプロパティにdeserializeしたくないことがわかりました。ASP.Net MVC3 - JSONモデルバインディングのデフォルトサポートが列挙型にデコードできないのはなぜですか?
ここではサンプルクラスと列挙タイプです:
がpublic enum MyEnum { Nothing = 0, SomeValue = 5 }
public class MyClass
{
public MyEnum Value { get; set; }
public string OtherValue { get; set; }
}
成功し、ユニットテストに合格し、次のコード、考えてみましょう:私は上記のobj1
をシリアル化した場合
[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);
}
を、その後のデータにすることを投稿MyClass型の単一のパラメータを持つMVC3コントローラ(以下の例)では、オブジェクトの他のプロパティはすべて正しくデシリアライズされますが、enum型のプロパティはデフォルト(ゼロ)の値にデシリアライズされます。
[HttpPost]
public ActionResult TestAction(MyClass data)
{
return Content(data.Value.ToString()); // displays "Nothing"
}
私はCodePlexのからMVCのソースコードをダウンロードしましたが、私は、私はMicrosoftの人々が実行するために使用しているものをうまくできないことを意味しており、直列化復元を実行する実際のコードが発生する場所へと困惑デシリアライゼーションを行い、私が何か間違っているのか、回避策があるのかを判断します。
何か提案がありがとうございます。
私はこのスレッドで役立つかもしれない答えを追加しました。 http://stackoverflow.com/questions/6051756/model-binding-to-enums-in-asp-net-mvc-3/9070963#9070963 – Difinity