我正在使用以下脚本发布到端点,它正在命中服务器上的断点,所以我知道路由是正确的。
$(document).ready(function () {
var o = new Object();
o.message = 'Hi from the page';
$.ajax({
type: 'POST',
contentType: 'application/json;',
data: JSON.stringify(o),
dataType: 'json',
url: 'home/PingBack',
success: function (result) {
alert(result.success);
}
});
});
服务器上的端点如下所示。
public JsonResult PingBack(MHolder message)
{
return Json(new { success = "steve"});
}
,模型看起来像这样。
public class MHolder
{
public string message { get; set; }
}
我确信在过去,这些值已经自动绑定到模型上,但我似乎无法获得任何绑定的东西!即使我只是将值作为字符串传递,我确定这是一些愚蠢的事情,我错过了任何想法?
答案 0 :(得分:2)
要注意的一些事情。您在服务器上发送请求作为JSON字符串(contentType: 'application/json'
和JSON.stringify(o)
),而您希望类型为MHolder
的对象。默认模型绑定程序不会执行此转换。您需要编写一个能够将JSON反序列化回MHolder实例的自定义模型绑定器,或者将请求发送为key=value
对(不要字符串化):
var o = new Object();
o.message = 'Hi from the page';
$.ajax({
type: 'POST',
data: o,
dataType: 'json',
url: 'home/PingBack',
success: function (result) {
alert(result.success);
}
});
答案 1 :(得分:0)
乍一看,代码对我来说似乎没问题。
尝试使用...
data : {message : "Hi from the page."},
...查看是否会导致填充MHolder实例。
此外,使用类似Fiddler的内容来捕获您的请求,并让您准确查看发布的内容。