C# Null FormData值转换为";空";串入.netcore 2.2控制器

C# Null FormData值转换为";空";串入.netcore 2.2控制器,c#,ajax,.net-core,C#,Ajax,.net Core,我正在尝试使用FormData发送一篇Ajax文章 var data = new FormData(); data.append('id', 1); data.append('description', null); $.ajax({ type: 'POST', url: '/TestController/UpdateDescription', data: data, contentType: false, processData: false,

我正在尝试使用FormData发送一篇Ajax文章

var data = new FormData();
data.append('id', 1);
data.append('description', null);

$.ajax({
    type: 'POST',
    url: '/TestController/UpdateDescription',
    data: data,
    contentType: false,
    processData: false,
    success: [...]
});
在控制器中,我有:

[HttpPost]
public JsonResult UpdateDescription(int id, string description)
{
    //description = "null", instead of null.
    bool isDescriptionNull = String.IsNullOrEmpty(description); //false!
}

我在另一个.NET4.7项目中使用了相同的代码,但没有发生这种情况,我得到了一个空值作为描述


这里发生了什么?

传递到data.append的任何值都将转换为字符串。完成发送空值的唯一方法是发送空字符串。i、 e.
data.append('description','')它将向后端发送一个空值而不严格化它。

根据ASP MVC核心代码,它可能已经改变了:如果默认的一个不符合您的要求,也许您应该考虑编写自己的模型绑定器。否则,您不应该为描述添加空值。“我为描述添加空值”← 但是,您不是在为
说明
传递
null
吗<代码>数据.append('description',null)
@Igor OP,表示将null转换为字符串形式的“null”。请尝试指定内容类型标题,例如:
contentType:'application/x-www-form-urlencoded'
,以便服务器知道如何解析请求中的数据。看起来这是一种预期行为:formsData.appends仅接受字符串值或Blob。因此,将null转换为“null”是“正确的”。也许.NET框架在幕后发挥了一些魔力。目前,最简单的方法是在javascript中为值添加一个签入,如果为null,则根本不发送它:
if(title.value)data.append('title',title.value)