1
我有一个剃须刀视图,下面的AJAX Jquery将UserData对象发布到控制器。它调用操作方法,但在控制器中调试时参数中的值为空。我已经看过在网上,并在类似的问题计算器,但仍无法看到下面的代码丢失:Ajax Json将null发布到控制器操作方法
在我的Razor视图:
$(document).ready(function(){
$('#button').click(function(e){
e.preventDefault();
var UserData = {"name":"test"}
$.ajax({
url: '/Home/Send/',
data : JSON.stringify(UserData),
type: 'POST',
traditional: true,
contentType: 'json',
success: function (data) {
$('#message').html("json data was sent to controller");
}
});
})});
在我的控制器:
[HttpPost]
public JsonResult Send(UserData userdata)
{
return Json(new { status = true });
}
public class UserData
{
public string name { get; set; }
}
UserData对象与我在AJAX post中发送的对象相匹配,但controller action方法中的参数值为null。
我还需要添加什么来使数据通过控制器?
谢谢这个工作。我以为我曾尝试过'application/json'和其他一些内容类型。是否有可能使用这种方法在@ Html.BeginForm中发布数据以提交表单值,或者是否必须使用表单值创建一个javascript对象,然后将其作为上述示例中的数据与ajax一起发布? – Theomax
没问题!使用表单数据,您可以简单地调用'$('#yourForm')。serialize()'而不需要明确地发送带请求的内容类型。默认情况下,如果没有指定jQuery,则发送'application/x-www-form-urlencoded'作为ajax请求的内容类型。只要确保您的表单字段具有正确的名称,并且ASP.NET MVC将能够读取请求数据。 –