jQuery 文件树始终使用根文件夹作为选定文件夹

jQuery File Tree always uses root folder as selected folder

我在使用 jQuery 文件树插件显示数据时遇到问题。不管我用什么'root',它总是用'\'显示C盘的内容!

我正在使用 aspx(后面有我未使用的代码)和母版页。

<div class="col-md-12" id="divAIMDocs">
</div>

<script>
    function openFile(file) {
        // do something with file
        alert(file);
    }
    $(document).ready(function () {debugger
        $('#divAIMDocs').fileTree({
            root: decodeURI(uploadFolder),
            script: '../assets/vendor/jquery_FileTree/connectors/jqueryFileTree.aspx',
            expandSpeed: 1000,
            collapseSpeed: 1000,
            multiFolder: false
        }, function(file) {
            openFile(file);
        });
    });

</script>

我在 venodr 的 js 文件(下方)以及 'connector' 脚本中添加了一个断点:

$(this).each( function() {
            
    function showTree(c, t) {debugger  <-- this shows 't' as '\'
        $(c).addClass('wait');

在连接器脚本中,jqueryFileTree.aspx:

string dir;
if(Request.Form["dir"] == null || Request.Form["dir"].Length <= 0) <-- always null
    dir = "/";
else
    dir = Server.UrlDecode(Request.Form["dir"]);

然后我尝试将 'root' 值硬编码为 'D:\Some\Folder':

    $(document).ready(function () {debugger
        $('#divAIMDocs').fileTree({
            root: 'D:\Some\Folder\',
            script: '../assets/vendor/jquery_FileTree/connectors/jqueryFileTree.aspx',
            ...

我在函数 showTree 中看到参数 't' 现在实际上看到 'D:\Some\Folder' 但连接器仍然说 Request.Form["dir"] 为空并继续显示 C 驱动器的内容.

我这里哪里做错了?

正如我所想,问题出在 Request.Form["dir"]。我找到了 this 篇文章,它指出了一个我没有想到的问题。这是由于使用了 .NET 的 FriendlyURL 功能(即与 jQuery 文件树插件无关)。

”此示例中的 HTML 表单旨在 post 到 Receiver.aspx,友好 URL 将接受包含文件扩展名的请求并发出 HTTP 301 - 已移动永久响应,指示浏览器对不带文件扩展名的同一资源发出新的 (GET) 请求。"

解决方案是注释掉 RoutConfig.cs 文件中的以下行:

public static void RegisterRoutes(RouteCollection routes)
{
    var settings = new FriendlyUrlSettings();
    //settings.AutoRedirectMode = RedirectMode.Permanent;
    routes.EnableFriendlyUrls(settings);
}

原始 POST 被后续 GET 覆盖,数据丢失。

Request.Form 仅当通过表单 POST.

加载页面时才会填充