1

我有一个 JS 文件,它创建一个 JSON 字符串,我将它字符串化并通过 AJAX 调用发布到服务器,使用 Fiddler 我可以看到 JSON 格式正确,并且我的 Action 在断点处停止时被调用,但我的模型只有 Nulls。

这是JS代码:

    var testString = { id: "1", date: "28/04/2013", sim: "B787", times: "0100", note: "Test note" };

    $.ajax({
        url: url,
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify(testString),
        success: function (data) {
        },
        error: function (request, status, error) {
        }
    });

这是模型:

[Serializable]
  public class BookingModel
  {
    public int Id { get; set; }
    public DateTime Date { get; set; }
    public string Sim { get; set; }
    public string Times { get; set; }
    public string Note { get; set; }
  }

最后是被调用的动作。

    [HttpPost]
    //[ValidateAntiForgeryToken]
    public ActionResult Booking(BookingModel BookingModel)
    {

        return Json(new { sucess = 0});
    }

在调试期间,BookingModel 只显示 NULL,但正如我在上面提到的,FIddler 将字符串显示为:

{"id":"1","date":"28/04/2013","sim":"B787","times":"0100","note":"Test note"}

我已经在这里呆了 2 天了,我快秃了,有人请帮忙……这让我发疯了。

谢谢。

悬崖。

编辑*

好的,更多信息看起来确实有效,但是如果我按 F5 继续执行操作,我必须在第一个断点上再次调用该操作,这一次数据存在且正确。

所以我现在的问题是它在第二次往返服务器时有效,为什么不在第一次往返?

谢谢

悬崖。

4

1 回答 1

1

当我在寻找别的东西时,碰巧偶然发现了这个。

当我第一次开始使用 MVC 时,我遇到了类似的事情,问题就是区分大小写。

在您的 JSON 对象中,您的所有属性名称都是小写的,在您的实际 C# 模型中,您的属性名称是大写的。

我将假设一年后您已经解决了这个问题,但本着为未来的搜索者提供答案的精神。

尝试确保 JSON 对象中的字段名称与支持模型中属性名称的大小写完全匹配。

于 2014-07-08T18:30:39.757 回答