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这是一种预防措施,因为您的控制器中可能还有一些尚未设置的内容,并且您的控制器不接受发送的参数。如果在请求参数中找不到密钥,添加默认值将立即分配空值。