【发布时间】:2017-10-18 22:07:36
【问题描述】:
为什么我的 MVC 操作 (ASP.NET Core 1.1) 总是显示此代码的值 false:
$.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.post 而不是 jQuery.ajax 来进一步简化它。这是我在第一个 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 调用不是缺少成功和错误处理程序吗?
-
删除
contentType选项(您没有对数据进行字符串化,也没有理由这样做)。以及为什么在调用void方法时要指定dataType: "json"?
标签: jquery ajax asp.net-mvc asp.net-core-1.1