【问题标题】:AJAX POST model emptyAJAX POST 模型为空
【发布时间】:2018-06-04 12:02:58
【问题描述】:

我在通过 Ajax 发布请求传递模型时遇到问题。

值被传递到下面的Javascript函数中,变量被转换成JSON字符串并发送到控制器方法。

在 Chrome 中使用开发工具时,我可以看到数据正在按预期发送。

问题是控制器中object参数的属性都是0,为什么会出现这种情况,如何解决?

示例数据

事件 ID = 419656

EventStart = 2017 年 12 月 5 日星期二 10:00:00 GMT+0000

EventEnd = 2017 年 12 月 5 日星期二 11:00:00 GMT+0000

JavaScript

function UpdateEvent(EventID, EventStart, EventEnd) {

    alert(EventID);

    $.ajax({
        type: 'POST',
        url: "/Calendar/UpdateEvent",
        contentType: "application/json",
        data: JSON.stringify({
            Id: EventID,
            NewEventStart: EventStart,
            NewEventEnd: EventEnd
        })
    });
}

型号

public class UpdateAppt
{
    public int Id { get; set; }
    public DateTime NewEventStart { get; set; }
    public DateTime NewEventEnd { get; set; }
}

控制器

[RoutePrefix("Calendar"), Route("{action=index}")]
public class CalendarController : Controller
{

    public void UpdateEvent(UpdateAppt updateModel )
    {
    }

}

【问题讨论】:

  • 如果您正在设置contentType: "application/json",您是否需要.stringify data
  • 给出发送数据的例子。目前状态下的问题尚不清楚,因为它不完整,需要太多问题才能澄清所问的问题。阅读How to Ask,然后提供minimal reproducible example,可用于重现您的问题,让我们更好地了解所询问的内容。
  • @Forty3 如果不使用.stringify,控制器方法甚至不会触发。

标签: javascript jquery ajax asp.net-mvc asp.net-ajax


【解决方案1】:

您是否尝试过类似的方法:

var model = {ID: EventID, 
        NewEventStart: EventStart, 
        NewEventEnd: EventEnd
        };

然后在您的 ajax 帖子中:

data: JSON.stringify(model),

这可能没有任何区别,但我从未见过:

type: 'POST',

相当

type: "POST",

【讨论】:

  • 感谢您的回答。恐怕没有效果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-03
  • 1970-01-01
  • 2015-03-14
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多