Отправить массив строк с FormData в чванство C # .net ядро? - PullRequest
1 голос
/ 11 июня 2019

Моя подпись .net api выглядит следующим образом:

[HttpPost]
public async Task<ActionResult<ServiceResult>> SendEmail([FromForm]SendEmailModel model)

и далее - моя конфигурация чванства:

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new Info
    {
        Version = "v1",
        Title = "App-Service"       
    });
});

.
.
.

app.UseSwagger();
app.UseSwaggerUI(c =>
{
    c.DocumentTitle = "App Service";
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "App Service");
});
app.UseMvc();

Он генерирует что-то следующим образом:

swagger

Но когда я его выполняю, To параметр отправляет как

[
  "\"1\",\"2\",\"3\""
]

Но это должно быть:

[
  "1", "2", "3"
]

Как я могу это исправить?

1 Ответ

0 голосов
/ 19 июня 2019

Лучше изменить контракт на [FromBody], как сказал Винит Патель. Но если это не вариант, вам придется сделать что-то хакерское с вашей моделью SendEmailModel, например так:

[HttpPost]
public async Task<ActionResult<ServiceResult>> SendEmail([FromForm]SendEmailModel model)
{
    model.To = Regex.Replace(model.To.FirstOrDefault(), "\"", string.Empty)
            .Split(",", StringSplitOptions.None);

    //now you can loop through model.To as a string array
    foreach (string toEmail in model.To)
    {
            // Your logic here
    }
    ...
}

Возможно, это не лучшее решение, но я надеюсь, что оно поможет:)

...