首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >.Net Core2.2中是否有SaveFileDialog?

.Net Core2.2中是否有SaveFileDialog?
EN

Stack Overflow用户
提问于 2019-10-23 07:55:25
回答 2查看 1.4K关注 0票数 2

我正在开发一个具有下载一些记录并将其保存为文本文件的功能的应用程序。如果我为结果文件放置一个静态位置,它就可以工作。我想让用户决定他们想要保存这个文件的位置。Asp.Net Core2.2MVC中是否有SaveFileDialog?

我在控制器中的下载操作如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public async Task<IActionResult> DownloadList([Bind("Id,isDownload")] BdoPE bdoPE)
        {
            UserDetails();
            string cncuser = ViewBag.DisplayName;
            var config = new CsvHelper.Configuration.Configuration();
            config.Delimiter = "\t";

            var records = new List<BdoRpt>();

            var record = _context.bdoPEs.Where(
                    c => c.DocType != null &&
                    c.isDownloaded == false &&
                    c.CompanyCode != null && 
                    c.AssignNum != null &&
                    c.ItemText != null &&
                    c.ItemText2 != null && 
                    c.isDownloaded == false &&
                    c.MarketerZ2 == cncuser).ToList();

            if (record.Count > 0)
            {
                foreach (var data in record)
                {
                    records.Add(new BdoRpt()
                    {
                        DocDateInDoc = data.DocDateInDoc,
                        DocType = data.DocType,
                        CompanyCode = data.CompanyCode,
                        PosDateInDoc = data.PosDateInDoc,
                        FiscalPeriod = data.FiscalPeriod,
                        CurrentKey = data.CurrentKey,
                        RefDocNum = data.RefDocNum,
                        DocHeadT = data.DocHeadT,
                        PosKeyInNextLine = data.PosKeyInNextLine,
                        AccMatNextLine = data.AccMatNextLine,
                        AmountDocCur = data.AmountDocCur,
                        ValDate = data.ValDate,
                        AssignNum = data.AssignNum,
                        ItemText = data.ItemText,
                        PosKeyInNextLine2 = data.PosKeyInNextLine2,
                        AccMatNextLine2 = data.AccMatNextLine2,
                        AmountDocCur2 = data.AmountDocCur2,
                        BaseDateDueCal = data.BaseDateDueCal,
                        ItemText2 = data.ItemText2,
                    });
                }

                using (var writer = new StreamWriter("C:\\file.txt")) // this is the static location
                using (var csv = new CsvWriter(writer, config))
                {
                    csv.WriteRecords(records);
                }
                recordDownloaded();
                var bdope = _context.bdoPEs.Where(
                    c => c.DocType != null &&
                    c.isDownloaded == false &&
                    c.CompanyCode != null &&
                    c.AssignNum != null &&
                    c.ItemText != null &&
                    c.ItemText2 != null &&
                    c.isDownloaded == false).ToList();

                foreach (var data in bdope)
                {
                    data.isDownloaded = true;
                }
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Lsmw));
            }
            else
            {
                NoRecordFound();
                return RedirectToAction(nameof(Lsmw));
            }
        }

在我的代码中,当前只是驱动器C:\上的文本文件

EN

回答 2

Stack Overflow用户

发布于 2019-10-23 08:14:28

您可以改为显示下载文件对话框:

https://stackoverflow.com/a/50334901/5137920

请注意,不要使用任何与桌面开发直接相关的库,以免出现兼容性问题。

票数 0
EN

Stack Overflow用户

发布于 2019-10-23 10:25:39

无法直接从应用程序显示保存对话框。您应该返回一个FileResult或任何派生实现,并让浏览器决定如何处理您的数据。有一个函数可以在这方面帮助你。

参见this link

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

https://stackoverflow.com/questions/58518100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文