我有一个JS文件创建了一个JSON字符串,我用字符串化并使用AJAX调用发布到服务器,使用Fiddler我可以看到JSON格式正确并且我的Action被调用,因为它在断点处停止但我的模型已经只是空虚。
这是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; }
}
最后这里是被调用的Action。
[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继续操作再次调用,这次数据存在且正确。
所以我现在的问题是,它是否适用于服务器的第二次往返,而不是第一次?
由于
悬崖。
答案 0 :(得分:1)
在我寻找其他东西的时候碰巧碰到了这个。
当我第一次开始使用MVC时,我遇到了类似的事情,而且是区分大小写的问题。
在您的JSON对象中,您的所有属性名称都是小写,在您的实际C#模型中,您的属性名称是大写的。
我将假设一年后你已经把这个问题解决了,但本着为未来的搜索者提供答案的精神。
尝试确保JSON对象中的字段名称与支持模型中属性名称的大小完全匹配。