Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.net中的文件夹浏览_Asp.net_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc 2 - Fatal编程技术网

ASP.net中的文件夹浏览

ASP.net中的文件夹浏览,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-2,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 2,我在这里试图做的是允许我的用户在网络上的数据服务器中选择一个路径,这样我就可以生成一个配置文件 我希望能够在我的asp.net页面上复制OpenFileDialog的功能。但是这个函数在asp.net上不存在,我知道asp.net调用文件上载中有这个控件。但我在这里需要的只是文件夹的路径/目录。我不需要上传我的文件 如何做到这一点?在web应用程序中实现这一点很棘手。您必须枚举要浏览的服务器上的文件夹(假定这是运行web应用程序的同一服务器),然后将该层次结构呈现给用户以选择文件夹。如果层次结构

我在这里试图做的是允许我的用户在网络上的数据服务器中选择一个路径,这样我就可以生成一个配置文件

我希望能够在我的asp.net页面上复制OpenFileDialog的功能。但是这个函数在asp.net上不存在,我知道asp.net调用文件上载中有这个控件。但我在这里需要的只是文件夹的路径/目录。我不需要上传我的文件


如何做到这一点?

在web应用程序中实现这一点很棘手。您必须枚举要浏览的服务器上的文件夹(假定这是运行web应用程序的同一服务器),然后将该层次结构呈现给用户以选择文件夹。如果层次结构不太大,您可以在前面枚举整个簇,并将其显示在树中。如果这是个大问题,您可以使用Ajax方法:选择顶级文件夹,然后发送Ajax请求以获取下一个级别,依此类推


要枚举文件夹,您需要自己遍历文件系统。请参阅了解一种方法。

否,此方法没有内置控件。这不是一个正常的要求,因为大多数网站不让他们的用户看到他们的文件结构

不过,构建一个用户控件来实现这一点很简单

我建议使用TreeView asp.net控件,该控件附加到列出文件的数据源

此示例将帮助您开始

您可以使用

var path = Server.MapPath("/");
var dirs = Directory.[EnumerateDirectories][2](path);
var files = Directory.[EnumerateFiles][3](path );

最后,为了使它看起来像一个对话框,您可以使用该组件

asp.net站点是与服务器完全断开连接的环境。正如其他人提到的,要复制OpenFileDialog,您需要查看文件夹结构,并在web/disconnected环境中将其呈现给用户。在这种情况下,用户是从实际的文件系统中抽象出来的。。。既然这个抽象已经发生了,那将是一个考虑你要走的路线的好时机。可能值得考虑的是,不需要直接复制文件系统,您可以管理数据库中的虚拟文件夹结构,并在其中维护指向磁盘上文件的链接/路径?

我找到的解决方案是,这仅适用于寻找答案的任何人:-

受保护的无效浏览\u单击对象发件人,事件参数e {

        Thread thdSyncRead = new Thread(new ThreadStart(openfolder));
        thdSyncRead.SetApartmentState(ApartmentState.STA);
        thdSyncRead.Start();

    }
    public void openfolder()
    {

        FolderBrowserDialog fbd = new FolderBrowserDialog();
        DialogResult result = fbd.ShowDialog();

        string selectedfolder = fbd.SelectedPath;


        string[] files = Directory.GetFiles(fbd.SelectedPath);
        System.Windows.Forms.MessageBox.Show("Files found: " + files.Length.ToString(), "Message");

    }

这真的是一个MVC问题还是一个webforms/asp经典问题?要使上述代码正常工作,必须使用System.Threading;using System.Windows.Forms;VishwajeetMCA包含以下引用,如果您仅在代码中添加引用,则此代码不会这样工作。但如果您右键单击引用并选择add R,则此代码将正常工作通过勾选System.Windows.Forms旁边的勾选框来引用和添加System.Windows.Forms。