【发布时间】:2016-05-08 20:39:09
【问题描述】:
我正在使用 ASP.Net Web API 2 构建一个 REST API。我有一个 GET 端点,它接受来自查询字符串的复杂对象。
public async Task<IHttpActionResult> GetAsync([FromUri]SpendingAccountSearchParams spendingAccountSearchParams) {...}
搜索对象有很多属性,这些属性要么可以为空,要么在对象的构造函数中填充了默认值。例如:
public SpendingAccountSearchParams()
{
AsOfDate = DateTime.Now;
Skip = 0;
Top = 20;
}
如果我在查询字符串中传递了至少 1 个参数,那么我的 SpendingAccountSearchParams 对象将填充到控制器中,并且所有默认值都设置正确。
但是,如果我不传递任何值,那么我的 SpendingAccountSearchParams 对象在构造函数中为空。
如果没有传递查询字符串参数,如何自动强制所有属性获取默认值?
我想要这个的等价物,但显然它无效并且不起作用:
public async Task<IHttpActionResult> GetAsync([FromUri]SpendingAccountSearchParams? spendingAccountSearchParams = new SpendingAccountSearchParams()) {...}
我知道在控制器中我可以检查 null 并在它不存在时创建一个新对象,但这只是一个端点的示例。最终,我将拥有许多具有不同搜索参数的端点,并且我希望所有端点都自动发生。
任何帮助将不胜感激。
谢谢!
【问题讨论】:
-
你应该使用模型活页夹。
-
我不熟悉模型绑定器是什么,你能告诉我更多关于它的信息吗?
标签: c# asp.net asp.net-web-api2