asp.net webapi:如何传递可选参数?

问题描述 投票:7回答:2

我正在使用新的asp.net网络api,并希望传递可选参数。是否需要填充属性,以便它允许使用?符号传递参数,是否正确?

我相信在使用uri模板完成此操作之前。

有人有例子吗?

我目前正在URL中传递ID,该URL以int形式到达我的控制器。但是我需要传递一些日期。

c# asp.net asp.net-web-api asp.net-web-api-routing
2个回答
6
投票

您可以通过使用可为空的类型将参数设为可选:

public class OptionalParamsController : ApiController
{
    // GET /api/optionalparams?id=5&optionalDateTime=2012-05-31
    public string Get(int id, DateTime? optionalDateTime)
    {
        return optionalDateTime.HasValue ? optionalDateTime.Value.ToLongDateString() : "No dateTime provided";
    }
}

3
投票

除了Ian先前提供的答案是正确的,您还可以提供默认值,我认为这是一个更干净的选项,可以避免检查是否通过了某些检查。只是另一个选择。

public class OptionalParamsController : ApiController
{
    // GET /api/optionalparams?id=5&optionalDateTime=2012-05-31
    public string Get(int id, DateTime optionalDateTime = DateTime.UtcNow.Date)
    {...}
}
© www.soinside.com 2019 - 2024. All rights reserved.