Javascript 控制器不接受传递的Json
我通过在视图中创建JSON得到这个结果Javascript 控制器不接受传递的Json,javascript,c#,json,Javascript,C#,Json,我通过在视图中创建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
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);
}
在调试模式下运行并检查控制器是否接受任何内容时,“header”参数为null。请告诉我哪里弄错了。问题在于“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"
}
刚刚用当前解决方案将
data:{header:JSON.stringify(data)}
替换为data:data
这是一种非常复杂的手动方式,您可以使用以下简单方式
将名称字段分配给每个元素,使其与现在的id相同
<input type="text" name="Company" value="" />
希望这会有所帮助。@Vanna我认为它的C#和ASP.NETC#和javascript。Json(false)只是输出一些东西。为什么您的类名和操作名是“ScheduleVisit”?这样我更容易记住。我明白了。。。我一到电脑前就会这么做。我希望你的解决方案能奏效!不过,这里还有一个问题,如果我删除标题,我将如何传递两个参数。实际上,我必须传递两个参数。在代码中,我只是说一个。据我所知,您不能向HttpPost发送多个对象。您可以创建一个包含要发送和使用的两个对象的对象。非常感谢。毫无疑问,这是一个更好的方法。
data: $("form").serializeArray(),