Есть ли SaveFileDialog в .Net Core 2.2? - PullRequest
       74

Есть ли SaveFileDialog в .Net Core 2.2?

2 голосов
/ 23 октября 2019

Я занимаюсь разработкой приложения с функцией, которая загружает некоторые записи и сохраняет их в виде текстового файла. Это работает, если я поставлю статическое местоположение для результирующего файла. Я хочу позволить пользователю решить, где он хочет сохранить этот файл. Существует ли SaveFileDialog в Asp.Net Core 2.2 MVC?

Мое действие загрузки в моем контроллере приведено ниже:

 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: \

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Нет способа отобразить диалоговое окно сохранения непосредственно из вашего приложения. Вы должны вернуть FileResult или любую производную реализацию и позволить браузеру решить, что делать с вашими данными. В этом вам может помочь функция.

См. эту ссылку .

Надеюсь, это поможет.

0 голосов
/ 23 октября 2019

Вместо этого вы можете отобразить диалоговое окно загрузки файла:
https://stackoverflow.com/a/50334901/5137920
Пожалуйста, будьте осторожны, чтобы не использовать какую-либо библиотеку, связанную непосредственно с разработкой рабочего стола, чтобы избежать проблем с совместимостью.

...