gpt4 book ai didi

.net-core - 在 .netcore web api 项目中将 null 值传递给 web api 调用中的可为空属性时出现问题

转载 作者:行者123 更新时间:2023-12-02 00:32:37 33 4
gpt4 key购买 nike

我在将空参数值传递给 HttpGet 动词中模型的属性时遇到问题。

我正在为我的 Web API 项目使用 .Net Core 2.1。下面是我在 Controller 中的操作方法:

    [HttpGet("get")]
public ActionResult GetData([FromQuery]MyTestModel model)
{
var result = new MyTestModel();
return new JsonResult(result);
}

我的 MyTestModel.cs 就像:

 [Serializable]
public class MyTestModel
{
public MyTestModel()
{
PageNo = 1;
PageSize = 10;
}
public int ClientId { get; set; }
public int? CandidateId { get; set; }
public DateTime? FromDate { get; set; }
public DateTime? ToDate { get; set; }
public int PageNo { get; set; }
public int PageSize { get; set; }
}

当我像这样调用 API 时:

api/controller/get?clientId=7583&candidateId=null&fromDate=null&toDate=null

我收到了 400 条回复。以下是响应信息:

{"toDate":["The value 'null' is not valid for ToDate."],
"fromDate":["The value 'null' is not valid for FromDate."],
"candidateId":["The value 'null' is not valid for CandidateId."]
}

当我根本不发送可为 null 的属性(candidateId、fromDate、toDate)时,这会触发我的操作并使用默认值作为 null。

如果我尝试显式设置空值,会有什么问题?

我是否需要在我的 Startup.cs 中设置一些配置来处理可为 null 的属性的 null 值?

任何帮助将不胜感激。

提前致谢。

最佳答案

查询字符串中发送的所有内容都只是一个字符串。因此,当您执行类似 toDate=null 的操作时,您实际上是在说“将 toDate 设置为 “null””,即 字符串“空”。 modelbinder 尝试将所有字符串转换为您要绑定(bind)到的实际类型,但没有可用的转换可以将 "null" 转换为 null DateTime

要将值设置为 null,您需要不传递任何值 toDate= 或只是从查询字符串中完全省略键。

关于.net-core - 在 .netcore web api 项目中将 null 值传递给 web api 调用中的可为空属性时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51242410/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com