【发布时间】:2018-09-07 13:08:32
【问题描述】:
在 ASP.NET Core 2.1 中,我注意到这个问题基本上是相反的:string.empty converted to null when passing JSON object to MVC Controller
当我将JSON 对象发送回具有空字符串属性的控制器时,它们不再自动转换为null。
以这个JS对象为例:
var person = {firstName:"", lastName:""};
$http.post("/app/index", person)
.then(function (response) {
// Success
}, function (error) {
// Failure
})
当绑定到控制器中的模型时,带有空字符串的属性保持为空字符串:
//
// POST: /App
[HttpPost]
public async Task<ActionResult> Index([FromBody] AppFormDTO data)
{
....
}
当将此对象保存到数据库时,我更愿意使用 null 值而不是一堆空字符串。
他们是否更改了ASP.NET Core 2.1 中的DefaultModelBinder?如果是这样,我如何将其更改回 MVC5 中的状态——string.empty 自动转换为 null?
更新,添加我的AppFormDTO模型,供参考:
public class AppFormDTO
{
public string firstName{ get; set; }
public string lastName{ get; set; }
}
【问题讨论】:
-
你传递的是空字符串而不是空值。
-
对,但是在ASP.NET MVC5中,当传入一个空字符串时,会自动转换为null。我正在将 MVC5 项目转换为 ASP.NET Core 2.1,我想知道是否可以在新框架中保留该功能?
-
你应该传递空值或者可以使用属性属性如果值为空那么它将为空
标签: c# asp.net json ajax asp.net-core-2.1