C# Null FormData值转换为";空";串入.netcore 2.2控制器
我正在尝试使用FormData发送一篇Ajax文章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,
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)代码>