首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么jQuery FileTree未设置为显示文件?

为什么jQuery FileTree未设置为显示文件?
EN

Stack Overflow用户
提问于 2017-09-18 17:06:16
回答 1查看 495关注 0票数 5

我正在使用jqueryfiletree插件,它似乎已经建立起来并且相当顺利,但是我有一些问题:

尽管这些备选方案被确定如下:

代码语言:javascript
运行
复制
$(function() {
    $("#sourceFileTree").fileTree({
        onlyFolders: true,
        root: "C%3a%5cProjects%5cBMW%5cCode%5cFileTransfers.Web",
        script: "/FileTree/Tree",
        multiFolder: false,
        multiSelect: false,
        preventLinkAction: true
    });
});
  1. onlyFolders似乎被忽略了,打开的任何文件夹都会显示它包含的文件。
  2. multiSelect: false也是如此。虽然我可以“选择”(用粗体突出显示)一次只有一个文件,但我仍然可以选中任意数量的文件夹和文件复选框。
  3. 只有multiFolder: false似乎像文档一样工作,但我不知道这是否因为这是默认行为。

如果我想配置这个小部件以允许用户只选择一个文件夹,我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-25 18:18:52

连接器(是的,您的是自定义的)是对结果执行筛选的工具。如果您没有从jQuery插件中寻找/使用传递的参数,那么结果将不是您所期望的。从上面发布的链接(https://github.com/jqueryfiletree/jqueryfiletree/blob/master/dist/connectors/Asp.Net-MVC/FileTreeController.cs)和PHP (似乎使用了适用的选项(https://github.com/jqueryfiletree/jqueryfiletree/blob/master/dist/connectors/jqueryFileTree.php) ),我们可以稍微更新一下,以返回更好的结果集。

注意-我们没有洞察您的文件,所以这是一个非常大的例子使用一些样板代码。另外,我知道您的答案是关于.NET核心的,但是即使语法在4.6和core之间不完全相同,逻辑仍然应该是正确的

代码语言:javascript
运行
复制
[HttpPost]
//notice the added additional params to the expected request variables
//these appear to match the names of the jQuery options
public virtual ActionResult GetFiles(string dir, bool multiSelect, 
    bool onlyFolders, bool onlyFiles)
{
    const string baseDir = @"/App_Data/userfiles/";

    dir = Server.UrlDecode(dir);
    string realDir = Server.MapPath(baseDir + dir);

    //validate to not go above basedir
    if (! realDir.StartsWith(Server.MapPath(baseDir)))
    {
        realDir = Server.MapPath(baseDir);
        dir = "/";
    }

    List<FileTreeViewModel> files = new List<FileTreeViewModel>();

    DirectoryInfo di = new DirectoryInfo(realDir);

    foreach (DirectoryInfo dc in di.GetDirectories())
    {                
        files.Add(new FileTreeViewModel() { Name = dc.Name, Path = String.Format("{0}{1}\\", dir, dc.Name), IsDirectory = true });
    }

    foreach (FileInfo fi in di.GetFiles())
    {
        files.Add(new FileTreeViewModel() { Name = fi.Name, Ext = fi.Extension.Substring(1).ToLower(), Path = dir+fi.Name, IsDirectory = false });
    }
    //lets filter some results using the properties of 
    //the `FileTreeViewModel()` class
    //I have no idea how you are wanting to use multiSelect, so 
    //it has been left out of this example.
    if(onlyFolders){
        files = files.Where(x=>x.IsDirectory).ToList();
    }
    if(onlyFiles){
        files = files.Where(x=>!x.IsDirectory).ToList();
    }
    return PartialView(files);
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46284752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档