C#Core Web API控制器可选Array默认值

时间:2018-04-30 15:19:49

标签: c# asp.net asp.net-mvc .net-core

我有一个方法GetAll的控制器,它有所有params可选(默认值)。概念是使这些请求中的任何一个有效:

/crm/contacts
/crm/contacts?sort=created_by
/crm/contacts?search=My%20Customer
/crm/contacts?sort=created_by&take=100
/crm/contacts?from=10&take=100
/crm/contacts?search=My%20Customer&sort=created_by&take=100

代码:

[HttpGet]
[Route("")]
public async Task<DTO.CRM.contact[]> GetAllAsync(
     int? from = null,
     int? take = 10,
     string search = null,
     string[] sort = null)
{

在调试中,我怀疑排序为null,而是将其视为{string [0]}。我在macOS上使用dotnet core 2.1.4。

如果未在url中传递,我怎样才能使sort真正为空?

1 个答案:

答案 0 :(得分:1)

你可以写一个custom binder,如果这真的让你烦恼的话。但是,它可能不值得,我建议你保持代码安全 - 确保它处理null,空数组和空字符串为空或非空字符串。