嘿,伙计们通过在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时,我的控制器上都会出现一个空变量?
答案 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会尝试从消息中读取值 正文,使用媒体类型格式化程序。