C# 如何在WebAPI中将null值传递给可为null的类型

C# 如何在WebAPI中将null值传递给可为null的类型,c#,asp.net,asp.net-mvc,nullable,webapi,C#,Asp.net,Asp.net Mvc,Nullable,Webapi,我的功能如下: [HttpGet] [Route("Departments/{departmentid}/employeeByDeptId")] [ResponseType(responseType: typeof(IList<Employee>))] public HttpResponseMessage GetDetailsByDeptId(int departmentId, DateTime? sinceDate)

我的功能如下:

        [HttpGet]
        [Route("Departments/{departmentid}/employeeByDeptId")]
        [ResponseType(responseType: typeof(IList<Employee>))]
        public HttpResponseMessage GetDetailsByDeptId(int departmentId, DateTime? sinceDate)
        {
            if (!ModelState.IsValid)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
            }

            var detailInfo = _employeeManager.GetDetailInfo(departmentId, sinceDate ?? _sinceDate);

            return CreateHttpResponseMessage(detailInfo);

        }
[HttpGet]
[路线(“部门/{departmentid}/employeeByDeptId”)]
[ResponseType(ResponseType:typeof(IList))]
公共HttpResponseMessage GetDetailsByDeptId(int部门ID,日期时间?sinceDate)
{
如果(!ModelState.IsValid)
{
返回请求.CreateErrorResponse(HttpStatusCode.BadRequest,ModelState);
}
var detailInfo=\u employeeManager.GetDetailInfo(部门ID,sinceDate???\u sinceDate);
返回CreateHttpResponseMessage(detailInfo);
}
我在声明中将sinceDate设置为可为null的类型,这样,如果传递null值,它将采用本地声明的“\u sinceDate”变量中的日期。 现在,在进行API调用时,如何将null值传递给sinceDate参数

当我传递以下url时:

我得到了想要的结果。 现在我想把sinceDate传递为null。我试过了 isnull


都给出了错误的请求错误。请告诉我如何在API调用中将空值分配给sinceDate?

只需在路由参数中添加
parameterName=null

public HttpResponseMessage GetDetailsByDeptId(int departmentId, DateTime? sinceDate = null){
}
然后在您的请求中,您只需排除该参数并使用访问

http://localhost:26754/v1/EmployeeMgnt/Departments/4/employeeByDeptId

另一个选项是添加重载。有两个函数名接收不同的参数

public HttpResponseMessage GetDetailsByDeptId(int departmentId, DateTime sinceDate){
}

public HttpResponseMessage GetDetailsByDeptId(int departmentId){
}

就我所知,对于任何阅读本文的人来说,被接受的答案(本身)已经不起作用了。有关更多详细信息以及两种不同的替代方法,请参阅。

仅从queryString中删除sinceDate不起作用。我还必须在函数定义中声明sinceDate=null。谢谢。但是,当我将sinceDate作为可空类型时,为什么必须声明parameter=null呢already@kanika这是一种预防措施,因为您的控制器中可能还有一些尚未设置的内容,并且您的控制器不接受发送的参数。如果在请求参数中找不到密钥,添加默认值将立即分配空值。