我有一个方法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真正为空?
答案 0 :(得分:1)
你可以写一个custom binder,如果这真的让你烦恼的话。但是,它可能不值得,我建议你保持代码安全 - 确保它处理null
,空数组和空字符串为空或非空字符串。