【发布时间】:2021-10-01 05:25:33
【问题描述】:
我有以下使用 .NET 4.6 的 asp.net WebApi2 路由,说明了我遇到的问题:
[Route("books/{id}")]
[HttpGet]
public JsonResponse GetBooks(string id, [FromUri]DescriptorModel model)
使用以下模型:
public class DescriptorModel
{
public bool Fiction { get; set; } = false;
// other properties with default arguments here
}
我正在尝试允许将 Fiction 属性设置为默认值(如果在获取请求期间未指定)。
当我明确指定 Fiction 属性时,它可以正常工作:
curl -X GET --header 'Accept: application/json' 'http://127.0.0.1:11000/api/v1/books/516.375/?Fiction=false'
但是,在进行以下测试时(省略带有默认参数的属性):
curl -X GET --header 'Accept: application/json' 'http://127.0.0.1:11000/api/v1/books/516.375'
“模型”的值绑定为 null,这不是我想要的。我的问题是如何简单地允许在模型绑定过程期间/之后但在调用控制器的“GetBooks”操作方法之前实例化使用默认值定义的模型。
注意。我使用带有 GET 请求的模型的原因是,在 swagger 中记录要容易得多,因为我的 GET/POST 操作在许多情况下可以通过继承重用相同的模型。
【问题讨论】:
-
只是尝试使用 [FromQuery] 而不是 [FromUri] 没有别的。它会工作
-
@masoud 不是来自 asp.net 核心的 [FromQuery]?我正在使用 asp.net。
标签: c# asp.net asp.net-web-api2 model-binding action-filter