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

时间:2012-05-31 08:24:36

标签: c# asp.net asp.net-web-api asp.net-web-api-routing

我正在使用新的asp.net web api,并希望传递可选参数,我相信你需要填充一个属性,所以它允许我使用传递params?符号

在用uri模板完成之前我相信。

有没有人真的感谢过一个例子或任何帮助。

我正在传递url中的id,它以int int

的形式到达我的控制器

但我需要传递一些日期

2 个答案:

答案 0 :(得分: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";
    }
}

答案 1 :(得分: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)
    {...}
}