#asp.net-core #swagger-ui #swashbuckle.aspnetcore
Вопрос:
Мне нужно обмануть суэггера, что мои фильтры-это не массив, а строковый тип, поэтому моя привязка преобразует строку json в реальный массив.
public class myBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
var l = new myLoadOptions();
var filters = bindingContext.ValueProvider.GetValue("filters").FirstOrDefault();
l.Filters = Newtonsoft.Json.JsonConvert.DeserializeObject<string[][]>(filters);
bindingContext.Result = ModelBindingResult.Success(l);
return Task.CompletedTask;
}
}
[ModelBinder(BinderType = typeof(myBinder))]
public class myLoadOptions
{
[DataType(DataType.Text)]
[Column(TypeName ="string")]
[DisplayFormat(DataFormatString = "[['field','operator','value']]")]
[Display(Name ="filters",AutoGenerateField =false, AutoGenerateFilter =false)]
public string[][] Filters { get; set; }
}
И действия контроллера
[HttpGet("[action]")]
public ActionResult<int> Get(myLoadOptions loadOptions)
{
return Ok(1);
}
Однако swagger по-прежнему показывает, что тип-массив, а не строка, и явно не тот формат, который я указал
I want swagger to show property like this
{
"filters":"[['field','operator','value']]")
}
Нет никаких проблем с получением данных , только с отображением
Применение: .Net5
Чванство : Дерзость.AspNetCore 5.6.3
Комментарии:
1. Есть какие-нибудь предложения?