在下面的代码中,我为“FirstName”传递了一个空值。当 AJAX POST请求在控制器端发出时,“FirstName”参数值将为Null,但如果我传递任何值,该值将绑定到该参数。只有对于空值,该值才会在ASP.NET核心项目中显示为Null
Javascript:
var dataVal = {};
dataVal["FirstName"] = "";
$.ajax({
type: "POST",
"url":url,
data:dataVal,
dataType: "json",
async: false,
success: function (m) {
if(m){
alert(m);
}
},
error: function(err){
}
});
控制器:
public IActionResult Home(string FirstName){
}
2条答案
按热度按时间9o685dep1#
当值为
FirstName
的ajax发送请求为""
时,是否希望在控制器中接收""
而不是null
?对此的解释如下:
这仅仅是因为
MVC 2.0
默认将字符串初始化为null。更准确地说,如果空字符串意味着没有值,那么. NET会设置其默认值。而默认字符串(属于引用类型)为null。那么如果请求中没有提供值,ModelBinder
会将属性设置为其默认值。请参考此link。
bindingContext.ModelMetadata.ConvertEmptyStringToNull = false;
更改为在控制器中接收""
,但在www.example.com core的文档中:Asp.net MVC, There are some methods do not work in .Net Core. For example, Someone provided a method to changebindingContext.ModelMetadata.ConvertEmptyStringToNull = false;
to receive""
in controller, But in asp.net core's document:获取一个值,该值指示在将模型表示为文本时是否将空字符串值或仅包含空白字符的字符串值转换为
null
。public abstract bool ConvertEmptyStringToNull { get; }
ConvertEmptyStringToNull
只有一个get
方法,所以你不能改变它。yacmzcpb2#
使用上面action方法上的
[HttpPost]
属性,设置默认值为string参数,以下代码供参考: