首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >显示webapp MVC中的folderBrowser对话框

显示webapp MVC中的folderBrowser对话框
EN

Stack Overflow用户
提问于 2017-11-29 11:35:07
回答 1查看 926关注 0票数 1

对c#和MVC来说还是个新手。我有一个MVC应用程序安装程序,其中的webapp运行在一个类似浏览器控制的chrome下。我有按钮里面的webapp (html),其中用户可以选择他想要的文件夹,然后我想要他们的实际路径。

为此,我向MVC控制器发出了一个ajax请求,它将打开folderBrowserDialog (System.Windows.Forms),然后返回path作为ajax响应。当我使用visual studio运行应用程序时,一切工作正常。但是,在将应用程序打包并安装可执行文件后,folderBrowserDialog根本不会出现。ajax响应中没有抛出错误,正确地使用空值

以下是代码(部分代码)

selectFolderGlobal是一个全局变量

代码语言:javascript
运行
复制
public JObject OpenFolderExplorer()
    {
        try
        {
            Thread fb= new Thread(new ThreadStart(openFileBrowser), 1);
            fb.SetApartmentState(ApartmentState.STA);
            fb.Start();
            fb.Join();
            JObject selectedFolder = new JObject();
            selectedFolder.Add("selectedFolder", selectedFolderGlobal);
            return selectedFolder;
        }
        catch (Exception ex)
        {
            Logger.Log(" Exception: " + ex.Message);
            JObject errorcode = JObject.Parse(mConstants.EXCEPTION);
            return errorcode;
        }
    }


private void openFileBrowser()
    {
        try
        {
            var fbd= new FolderBrowserDialog();
            fbd.ShowNewFolderButton = false;
            DialogResult result = fbd.ShowDialog(new Form() { TopMost = true, WindowState = FormWindowState.Minimized });
            if (result == DialogResult.OK)
            {
                selectedFolderGlobal= fbd.SelectedPath;
            }
        }
        catch (Exception ex)
        {
            Logger.Entry(" Exception: " + ex.Message);
        }
    }

Ajax响应返回如下

代码语言:javascript
运行
复制
{
  "selectedFolder":null
}

有没有人知道为什么只有在包创建之后才会发生这种情况(在创建.exe之后)?System.Windows.Forms.dll被添加到依赖项中(如果没有,它应该抛出异常,否则甚至包构建都会失败)

EN

回答 1

Stack Overflow用户

发布于 2017-11-30 10:23:36

您正在尝试打开web服务器上的浏览文件夹对话框,用户浏览器正在其本地计算机上运行,即使此works用户无法看到您在服务器上启动的对话框,这些都是单独的计算机。并且web应用程序只在web应用程序根目录下拥有文件使用权限,您不能使用其他文件夹,实际上您并不需要它。

您必须了解web应用程序是如何工作的,所有c#代码都在服务器上执行,c#代码生成html、css、javascript和其他文件,然后浏览器下载这些内容并在本地机器上使用。浏览器呈现html,执行javascript...

当你在本地主机上调试时,你的计算机既是服务器又是客户端,这就是为什么在VS中工作,而你可能是在本地机器上以管理员身份运行它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47544635

复制
相关文章

相似问题

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