我通过在视图中创建JSON获得此结果
header:{"ScheduledVisit":"08/02/2017 12:00 AM","Company":"fdsa","ContactPerson":"asfd","Phone":"asdf","Purpose":"fasd","Detail":"asdf"}
我的模型看起来像这样:
public class ScheduleVisit
{
[Required(ErrorMessage = "* Required")]
public DateTime ScheduledVisit { get; set; }
public string Company { get; set; }
public string ContactPerson { get; set; }
public string Phone { get; set; }
public string Purpose { get; set; }
public string Detail { get; set; }
}
我传递的数据如下:
document.getElementById("btn_submit_schedule").addEventListener("click", function (event) {
event.preventDefault();
if ($("#scheduledVisit").val().length === 0) {
$("#scheduledVisit").focus();
}
var obj = {};
obj.ScheduledVisit = document.getElementById("scheduledVisit").value;
obj.Company = document.getElementById("company").value;
obj.ContactPerson = document.getElementById("contactPerson").value;
obj.Phone = document.getElementById("phone").value;
obj.Purpose = document.getElementById("purpose").value;
obj.Detail = document.getElementById("detail").value;
console.log(obj);
addSchedule(obj);
});
function addSchedule(data) {
$.ajax({
type: "POST",
url: "@Url.Action("ScheduleVisit", "ScheduleVisit")",
data: {header: JSON.stringify(data)},
success: function(result) {
alert(result);
},
error: function(error) {
alert(error);
}
});
}
and my controller looks like this:
[HttpPost]
public JsonResult ScheduleVisit(ScheduleVisit header)
{
return Json(false);
}
当我在调试模式下运行并检查我的控制器是否接受任何内容时,我在"标题"上得到null。参数。请告诉我我哪里弄错了。
答案 0 :(得分:1)
刚刚用data: {header: JSON.stringify(data)}
替换data: data
当前解决方案。
这种非常复杂且手动的方式您可以使用以下简单方法
为每个元素指定名称字段,就像id now
一样<input type="text" name="Company" value="" />
使用serializeArray
data: $("form").serializeArray(),
希望这会有所帮助。
答案 1 :(得分:0)
问题是“data:{header:JSON.stringify(data)}”与控制器上的预期不同。
这应该有用。
$.ajax({
type: "POST",
url: "@Url.Action("ScheduleVisit", "ScheduleVisit")",
data: data,
...
控制器需要一个像这样的对象:
{
"ScheduledVisit":"08/02/2017 12:00 AM",
"Company":"fdsa",
"ContactPerson":"asfd",
"Phone":"asdf",
"Purpose":"fasd",
"Detail":"asdf"
}