我已经尝试了我在stackoverlfow上已经找到的所有解决方案,并按照此处的说明重新开始https://stick2basic.wordpress.com/2013/04/14/how-to-pass-model-from-view-to-controller-using-jquery/
每次触发我的ajax调用时,它都会将null传递给控制器
*修正了拼写错误,问题仍然存在
模型
public class DateModel
{
public DateTime date { get; set; }
}
的JavaScript
$(document).ready(function () {
$("#jqxdatetimeinput").jqxDateTimeInput({ width: '250px', height: '25px' });
$("#jqxbutton").jqxButton({ width: '150', height: '25' });
$("#jqxbutton").on('click', function () {
var dateSelected = $('#jqxdatetimeinput').jqxDateTimeInput('getDate');
alert(dateSelected);
var DateModel =
{
"date": dateSelected
};
$.ajax({
url: 'home/submitDate/',
data: JSON.stringify(DateModel),
type: 'POST',
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert(data);
}
});
});
});
控制器
public class HomeController : Controller
{
public IActionResult Index()
{
DateModel selectionDate = new DateModel();
return View();
}
public JsonResult submitDate(DateModel selectionDate)
{
return Json(selectionDate.date);
}
}
答案 0 :(得分:0)
您无需使用JSON.stringify
。由于它是一个简单的对象,您可以按原样传递它。模型绑定将起作用。
$.ajax({
url: 'home/submitDate/',
data: DateModel,
type: 'POST',
success: function (data) {
alert(data);
}
});
或者如果要发送js对象的Json strinfified版本,则需要通过指定contentType属性值告诉服务器您要发送的数据类型。你错了!修复contentType
中的拼写错误!值
$.ajax({
url: '@Url.Action("submitDate")',
data: JSON.stringify(DateModel),
type: 'POST',
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert(data);
}
});
答案 1 :(得分:0)
这是你的contentType参数的拼写错误吗?
contentType: 'aplication/json; charset=utf-8',
也许应该是
contentType: 'application/json; charset=utf-8',
答案 2 :(得分:0)
问题是日期格式。我能够使用IE Debugging并看到JQ Widgets以DateTime无法处理的意外方式传递日期。