c# - 在 swagger C# .net 核心中使用 FormData 发送字符串数组?

标签 c# .net-core swagger multipartform-data swagger-2.0

我的.net api签名如下:

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

下面是我的 swagger 配置:

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"
]

我该如何解决?

最佳答案

最好像Vinit Patel说的那样把contract改成[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
    }
    ...
}

这可能不是最好的解决方案,但我希望它能有所帮助:)

关于c# - 在 swagger C# .net 核心中使用 FormData 发送字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56542429/

相关文章:

c# - 将云服务 Web 角色迁移到具有存储依赖项的 Service Fabric

java - 这个项目中的 app-root 是什么?

c# - 在adapter.Fill(table)行中未处理文件未找到异常

c# - linq to 对象查询以排除 0

c# - 如何模拟 IConfiguration.GetValue

swagger - 避免在 Swagger 2.0 中使用样板代码

swagger - 你能在 OpenAPI 中指定两种格式吗?

c# - VBA 中的 VSTO : AddIn. 对象有时返回 Nothing (null)

c# - 具有引用参数/参数或匿名函数的 Func/Action 委托(delegate)

javascript - 如何在 .net 核心应用程序中使用 post 方法将 javascript 值传递给 Controller ​​?