jsTree AJAX tidak memanggil Pengontrol MVC

Saya sedang membangun pohon menggunakan plugin jsTree dengan ASP.NET MVC 4. Ini kode saya sebelum saya menjelaskannya:

HTML:

<div id="MainTree"></div>
<div onclick="$load();">Load Tree</div>

Javascript:

$load = function(){
    $('#MainTree').jstree({
        "json_data": {
            "ajax": {
                "url": "/Home/GetTreeData",
                "type": "POST",
                "dataType": "json",
                "contentType": "application/json charset=utf-8"
            }
        },
        "themes": {
            "theme": "default",
            "dots": false,
            "icons": true,
            "url": "/content/themes/default/style.css"
        },

        "plugins": ["themes", "json_data", "dnd", "contextmenu", "ui", "crrm"]

    });
}

Pengontrol:

[HttpPost]
public JsonResult GetTreeData()
{
   JsTreeModel rootNode = new JsTreeModel(); // Breakpoint here, never triggered
   rootNode.attr = new JsTreeAttribute();
   rootNode.data = "Root";
   string rootPath = "Test";
   rootNode.attr.id = rootPath;

   JsTreeModel t1 = new JsTreeModel();
   t1.attr.id = "1";
   JsTreeModel t2 = new JsTreeModel();
   t2.attr.id = "2";
   JsTreeModel t3 = new JsTreeModel();
   t3.attr.id = "3";
   rootNode.children.Add(t1);
   rootNode.children.Add(t2);
   rootNode.children.Add(t3);

   return Json(rootNode);
}

Ketika saya mengklik tombol "Muat Pohon", $load() terpicu dan dalam debug Firefox berjalan tanpa menimbulkan kesalahan. Pohon <div> berubah dari:

<div id="MainTree"></div>

to

<div role="tree" class="jstree jstree-1 jstree-default jstree-default-responsive jstree-leaf" id="MainTree">
<ul class="jstree-container-ul"></ul>
</div>

Saya menempatkan breakpoint di Controller, dicatat dalam komentar, yang tidak pernah terpicu; yaitu panggilan ke Pengendali sepertinya tidak pernah dilakukan. HomeController.cs saya tanpa kesalahan sintaksis.

Apakah saya melewatkan sesuatu di sini?


person John 'Mark' Smith    schedule 11.04.2014    source sumber


Jawaban (1)


Saya akan menjawabnya sendiri daripada membiarkannya menjadi yatim piatu.

Ini adalah cara termudah yang saya temukan untuk membuat pohon dengan jsTree:

<div id="divtree">
        <ul id="tree">
            <li>
                Subfolder 1
                <ul id="tree">
                    <li>Pub 1</li>
                    <li>Pub 2</li>
                    <li>Pub 3</li>
                </ul>
            </li>

            <li> 
                SubFolder 2
                <ul id="tree">
                    <li>Pub 1</li>
                    <li>Pub 2</li>
                </ul>
            </li>
        </ul>
    </div>

<script type="text/javascript">
    $(function(){
        $("#divtree").jstree();
    });
    </script>
person John 'Mark' Smith    schedule 14.04.2014