Как вернуть словарь из WebAPI? - PullRequest
0 голосов
/ 31 мая 2019

У меня есть проект MVC, который из представления загружает один или несколько файлов на сервер, затем, когда я нажимаю «Отправить», веб-служба Provate вызывается, и я передаю коллекцию файлов для загрузки. Загрузка работает нормально, но из webapi у меня есть объект (класс Store), который я хотел бы вернуть.

Я не знаю, если я не прав, чтобы вернуть «сырой» объект из веб-API или неправильно читать его.

это моя модель

    public class Store
    {
        public IDictionary<string, string> dictionaryOfStores = new Dictionary<string, string>();
        public string CodeText { get; set; }
    }

это мой метод веб-API:

public async Task<ActionResult<Store>> UploadAsync()
        {
            dictStores = new Store();
            foreach (var formFile in form.Files)
                    {

                        dictStores.dictionaryOfStores.Add(formFile.FileName, codefilename);
                        // also CodeText is filled here
                    }
                }
            }

            // return dictionary
            //

            return dictStores;
        }

это мой контроллер mvc, который вызывает приватный веб-сервис

  public async Task<IActionResult> Upload(List<IFormFile> files)
        {

                    using (var client = new HttpClient())
                    {

                            var model = new FilesViewModel();
                            MultipartFormDataContent multiContent = new MultipartFormDataContent();
                            foreach (var formfile in files)
                            {
                                client.BaseAddress = new Uri(BaseAddress);
                                byte[] data;
                                using (var br = new BinaryReader(formfile.OpenReadStream()))
                                    data = br.ReadBytes((int)formfile.OpenReadStream().Length);
                                ByteArrayContent bytes = new ByteArrayContent(data);

                                multiContent.Add(bytes, "file", formfile.FileName);
                                model.Files.Add(new FileDetails { Name = formfile.GetFilename() });
                            }
                            var result = await client.PostAsync("api/Load/Upload", multiContent); // 
                            // here i have try to read result.Content but doesn't have my data
                            var res = await result.Content.ReadAsStreamAsync();
                            // here i have to put res in my model
                            return View("Summary", model);

                    }

Я использую Asp Net Core 2.2 Спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

Я решил, увидев ответ: Как получить объект с помощью Httpclient с ответом Ok в Web Api Я смог прочитать данные:

await result.Content.ReadAsAsync<Store>()
0 голосов
/ 31 мая 2019

Может быть, что-то вроде этого

IDictionary<MyClass, int> resource = new Dictionary<MyClass, int> 
{
  { new Class {Property1="1"}, 1 },
  { new Class {Property1="11"}, 1 }
};

return Ok(resource); 
...