从www.example.com核心mvc项目中的Jquery AJAX POST请求传递空值时,参数未绑定空值Asp.net

ukqbszuj  于 2023-01-27  发布在  .NET
关注(0)|答案(2)|浏览(128)

在下面的代码中,我为“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){

}
9o685dep

9o685dep1#

当值为FirstName的ajax发送请求为""时,是否希望在控制器中接收""而不是null
对此的解释如下:
这仅仅是因为MVC 2.0默认将字符串初始化为null。更准确地说,如果空字符串意味着没有值,那么. NET会设置其默认值。而默认字符串(属于引用类型)为null。那么如果请求中没有提供值,ModelBinder会将属性设置为其默认值。
请参考此link

    • 收件人**: 上面提供的链接是关于www.example.com MVC的,有一些方法在. Net Core中不起作用。例如,有人提供了一个方法来将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 change bindingContext.ModelMetadata.ConvertEmptyStringToNull = false; to receive "" in controller, But in asp.net core's document:

获取一个值,该值指示在将模型表示为文本时是否将空字符串值或仅包含空白字符的字符串值转换为null
public abstract bool ConvertEmptyStringToNull { get; }
ConvertEmptyStringToNull只有一个get方法,所以你不能改变它。

yacmzcpb

yacmzcpb2#

使用上面action方法上的[HttpPost]属性,设置默认值为string参数,以下代码供参考:

[HttpPost]
public IActionResult Home(string FirstName="")
{
    …
}

相关问题