我正在开发一个小型文件管理系统。它用于复制文件系统,因此它会在您选择的驱动器或文件夹上显示文件和文件夹。 此外,它使用jsTree ver 3来显示系统。由于有数百万个文件/文件夹,我想动态加载每个文件/文件夹,一次一个。 这就是我在jsTree中所拥有的:
> function RedrawDirectories() {
> $('#DestinationTree').jstree({
> 'core': {
> "animation": 0,
> "expand_selected_onload": false
> },
>
> "json_data": {
> "ajax": {
> "url": function (node) {
> return node.id === '#' ? 'Home/GetRootNode' : 'Home/GetSpecificNode?nodeId=' + node.id;
> },
>
> "type": "GET",
> "dataType": "json",
> "contentType": "application/json charset=utf-8"
> }
> },
等。 所以,如果我在根,我调用形成根链接的函数,对于任何其他节点函数,调用带参数的GetSpecificNode。
以下是我在后端的控件:
[HttpGet]
public JsonResult GetRootNode()
{
JsTreeModel rootNode = new JsTreeModel();
rootNode.attr = new JsTreeAttribute();
rootNode.attr.rel = "root";
rootNode.data = ConfigurationManager.AppSettings["StorageDrive"];
rootNode.attr.id = ConfigurationManager.AppSettings["StorageDrive"];
rootNode.state = "open root folder";
return Json(rootNode, JsonRequestBehavior.AllowGet);
}
[HttpGet]
public JsonResult GetSpecificNode(string nodeId)
{
JsTreeModel specificNode = new JsTreeModel();
specificNode.attr = new JsTreeAttribute();
specificNode.attr.rel = "folder";
specificNode.state = "open folder";
return Json(specificNode, JsonRequestBehavior.AllowGet);
}
显然,我需要为下面的根节点和特定节点添加子节点。 我使用以下类结构来表示后端的节点:
> using System; using System.Collections.Generic; using System.Linq;
> using System.Web;
>
>
> public class JsTreeModel {
> public string data;
> public JsTreeAttribute attr;
> public string state;
> public List<JsTreeModel> children;
> }
>
> public class JsTreeAttribute {
> public string id;
> public string rel; }
Firebug中显示以下错误:
"NetworkError: 404 Not Found - http://localhost:56357/Home/Home/GetSpecificNode?nodeId=undefined"
答案 0 :(得分:0)
您需要提供参数名称,如下所示
public JsonResult GetSpecificNode(string id) {
// Block of code
}
答案 1 :(得分:0)
public JsonResult GetSpecificNode(string nodeId)
{
JsTreeModel specificNode = new JsTreeModel();
specificNode.attr = new JsTreeAttribute();
specificNode.attr.rel = "folder";
specificNode.state = "open folder";
specificNode.attr.id = nodeid; //add this row
return Json(specificNode, JsonRequestBehavior.AllowGet);
}
很抱歉重温此主题,但对于复制此代码的任何人来说,错误是设置节点的attr.id失败。