Javascript Dynatree ASP.NET MVC:将树发布到服务器
我想通过ajax将数据从dynatree发布到我的asp.net mvc服务器。我使用Steve提供的模型类(),它可以很好地将数据从服务器获取到客户端。但是我在将树数据发布到服务器时仍然存在问题 客户: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",
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]”);