私の MVC3 RC2 アプリケーションでは、JsTree の JSON_DATA プラグインのget_json()呼び出しを使用してJsTreeからツリー構造を取得し、コントローラーの Action メソッドへの Ajax コールバックを使用しています。
[HttpPost]
public virtual ActionResult JsTreeTest(List<JsTreeNode> jsTreeNodes)
{
// convert passed POCO back to JSON for debugging/comparison
string json = JsonHelper.Serialize(jsTreeNodes);
// convert JSON to POCO for debugging/comparison
List<JsTreeNode> r = JsonHelper.Deserialize<List<JsTreeNode>>(json);
return View(MVC.Home.JsTreeTest());
}
私の JsTreeNode クラスの定義は次のとおりです。
[DataContract]
public class JsTreeNode
{
[DataMember]
public NodeAttributes attr { get; set; }
[DataMember]
public Data data { get; set; }
[DataMember]
public string state { get; set; }
[DataMember]
public List<JsTreeNode> children { get; set; }
}
これは 100% 問題なく動作しますが、混乱を避けるために、"attr" プロパティの名前を "nodeAttributes" に変更したいので、クラス定義を次のように変更しました。
[DataContract]
public class JsTreeNode
{
[DataMember(Name = "attr")] // Expecting name "attr" in JSON
public NodeAttributes nodeAttributes { get; set; } // Store the "attr" value here
[DataMember]
public Data data { get; set; }
[DataMember]
public string state { get; set; }
ただし、現在、渡される nodeAttributes の値は常に「null」です。
明らかな何かが欠けているか、「名前」属性の正しい使用法を完全に理解していないと確信しています。
アドバイスをいただければ幸いです。