为什么我的MVC行动(ASP.NET 1.1的核心)始终显示值假此代码:价值
$.ajax({
url: "/home/SetValue",
type: "post",
dataType: "json",
contentType: 'application/json; charset=utf-8',
data: { "val": true }
});
public class HomeController : Controller
{
[HttpPost]
public void SetValue(bool val)
{
bool check = val;
}
}
解决方案:
我必须做两件事才能使它起作用。
首先,我不得不删除dataType
行,因为它指定了返回类型并且我的操作不返回任何内容。其次,contentType
是错误的。我可以使用application/x-www-form-urlencoded; charset=UTF-8
或只是删除该行。这是默认的contenteType
,在这种情况下工作。
url的大小写是不相关的,并且不需要回调(例如,成功或错误)。所以,这个工程:
$.ajax({
url: "/home/setvalue",
type: "post",
data: { "val": true }
});
我可以使用,而不是jQuery.ajax jQuery.post更加简化它。这是我在我的第一个ASP.NET Core应用程序中最后一个简单的概念证明:
// JavaScript
$("#myCheckbox").on("click", function()
{
var isChecked = $(this).is(":checked");
$.post({
url: "/home/setvalue",
data: { "val": isChecked }
});
});
// .NET controller
[HttpPost]
public void SetValue(bool val)
{
bool check = val;
}
感谢您的所有输入。
是不是你的$ .ajax调用缺少成功和错误处理程序? – Juan
删除'contentType'选项(你没有对数据进行字符串化,并且没有理由这样做)。你为什么在调用'void'方法时指定'dataType:“json”'? –