首页 > 解决方案 > 使用 ajax 在 ASP.NET MVC 中发布数据时,数据为空

问题描述

在调试 MVCcontroller 时,eventDetails 的所有属性都为空,尽管从客户端这些属性都有值

阿贾克斯调用

  $.ajax({
            type: "POST",
            url: "/Home/schedule",
            data: {
                EventDetailsId: 1,
                Location: scheduleData.location,
                EventName: scheduleData.title

            },
            contentType: 'application/json',
            success: function (data) {
                alert(data);
            },
            error: function () {
                alert("Error occured!!")
            }
        });

EventDetails 类

    public class EventDetails
        {
            public int EventDetailsId{ get; set; }
            public string Location { get; set; }
            public string EventName { get; set; }
    }

发布电话

 [HttpPost]
    public JsonResult Schedule(EventDetails eventDetails)
    {
        return Json(new { status = true });
    }

在此处输入图像描述

在此处输入图像描述

标签: ajaxasp.net-mvc

解决方案


当您的输入是复杂类型时,服务器期望接收一个 json 格式并将其反序列化为定义的对象类型,在这种情况下您必须满足服务器的期望。更改您的 javascript 代码,如下所示:

var arr = {
    'EventDetailsId': 1,
    'Location': scheduleData.location,
    'EventName': scheduleData.title

};
$.ajax({
    type: "POST",
    url: "/Home/schedule",
    data: JSON.stringify(arr),
    contentType: 'application/json',
    success: function (data) {
        alert(data);
    },
    error: function () {
        alert("Error occured!!")
    }
});

推荐阅读