Javascript Dynatree ASP.NET MVC:将树发布到服务器

Javascript Dynatree ASP.NET MVC:将树发布到服务器,javascript,asp.net,serialization,dynatree,Javascript,Asp.net,Serialization,Dynatree,我想通过ajax将数据从dynatree发布到我的asp.net mvc服务器。我使用Steve提供的模型类(),它可以很好地将数据从服务器获取到客户端。但是我在将树数据发布到服务器时仍然存在问题 客户: var td = $("#tree").dynatree("getTree").toDict(); var json = JSON.stringify(td); $.ajax({ type: "POST", url: "/parttree",

我想通过ajax将数据从dynatree发布到我的asp.net mvc服务器。我使用Steve提供的模型类(),它可以很好地将数据从服务器获取到客户端。但是我在将树数据发布到服务器时仍然存在问题

客户:

 var td = $("#tree").dynatree("getTree").toDict();
 var json = JSON.stringify(td);

 $.ajax({
        type: "POST",
        url: "/parttree",
        data: json,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            alert(response);
        }
    });
服务器:

[POST("/parttree")]
public ActionResult TreeData2( List<TreeItem>  ot)
{
    // ot is always null here
}
[POST(“/parttree”)]
公共行动结果树TA2(列表ot)
{
//ot在这里总是空的
}
VS调试器中json的内容:
{“title”:null,“key”:“_1”,“isFolder”:false,“isLazy”:true,“tooltip”:null,“href”:null,“icon”:null,“addClass”:null,“noLink”:false,“activate”:false,“focus”:false,“expand”:true,“select”:false,“hideCheckbox”:false,“unselectable”:false,“children”:[{“title”:“root”,“key”:“\u 2”,“isFolder”:false,“isLazy”:false,“tooltip”:null,“href”:null,“icon”:null,“icon”:addClass”:null,“noLink”:false,“activate”:false,“focus”:false,“expand”:false,“select”:false,“hideCheckbox”:false,“unselectable”:false,“childrend”:…./p>我会说如下:

 $.ajax({
        type: "POST",
        url: "/parttree",
        data: {tree: json},
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            alert(response);
        }
    });
你的MVC行动是:

    [HttpPost]
    public ActionResult PartTree(FormCollection form)
    {
        List<TreeItem> ot =  new JavaScriptSerializer().Deserialize<List<TreeItem>>(form["tree"]);

    }
[HttpPost]
公共操作结果零件树(FormCollection表单)
{
List ot=new JavaScriptSerializer()。反序列化(形式[“树]);
}

尽管如果返回JSON,您可能希望看到的是JsonResult而不是ActionResult。

您的解决方案[POST(“/parttree”)]public ActionResult TreeData2(FormCollection表单)不会调用控制器函数我以前从未见过这种语法。但是如果您使用formcollection并将其强制转换为List,则应该可以。如果您注意到我在ajax调用中命名了对象树-data:{tree:json}[POST(“/parttree”)]是attributerouting,函数是用我的解决方案调用的,而不是用你的解决方案调用的?要么:List ot=new JavaScriptSerializer()。反序列化(Request.Form[“tree]”);