MVC中的Ajax POST返回null

时间:2018-01-25 19:51:25

标签: jquery ajax asp.net-mvc

嘿,伙计们通过在MVC中获取控制器值来解决一些问题。

这是我在控制器上的HttpPost:

[HttpPost]
    public void GlobalIsWeekCheck(bool? incomingIsWeek)
    {
        GlobalIsWeek = incomingIsWeek;
    }

这是我在视图上的脚本:

var incomingIsWeek = false;
$.ajax({
                    type: "POST",
                    url: "/Home/GlobalIsWeekCheck",
                    data: incomingIsWeek,
                    success: function() {
                        alert('Successfully connected to the server');
                    }, 
                    error: function() {
                        alert('Something went wrong');
                    }
                });

任何人都知道为什么每次我称之为ajax时,我的控制器上都会出现一个空变量?

2 个答案:

答案 0 :(得分:3)

您的数据必须是具有正确名称的对象,以便可以将其分配给变量。

如此调整

data: {"incomingIsWeek" : incomingIsWeek}

答案 1 :(得分:0)

您的操作缺少FromBody,因为输入参数不是复杂对象,操作选择器会尝试从uri中获取参数。

[HttpPost]
public void GlobalIsWeekCheck([FromBody]bool? incomingIsWeek)
{
    GlobalIsWeek = incomingIsWeek;
}

以下是官方documentation

  

默认情况下,Web API使用以下规则绑定参数:

     

如果参数是"简单"类型,Web API尝试获取值   来自URI。简单类型包括.NET基元类型(int,   bool,double等等,加上TimeSpan,DateTime,Guid,decimal,   和字符串,以及具有可转换的类型转换器的任何类型   一个字符串。 (稍后将详细介绍类型转换器。)

     

对于复杂类型,Web API会尝试从消息中读取值   正文,使用媒体类型格式化程序。