我用以下方法调用服务器:
var url = '@Url.Action("GetWhoBowls", "Home")';
$.getJSON(url, { "theDate": "calEvent.start" }, function (data) {
alert(data.name);
});
我已经尝试过引用'theDate'的所有排列,甚至是上面的calEvent.start ....在所有情况下,服务器都抱怨(来自Firebug):
参数字典在'MatchClubMVC.Controllers.HomeController'中为方法'System.Web.Mvc.ActionResult GetWhoBowls(Double)'包含非可空类型'System.Double'的参数'theDate'的空条目。< / p>
Firebug将调用的参数显示为 theDate calEvent.start
这是我的控制器方法签名
public ActionResult GetWhoBowls(double theDate)
有人可以如此善良,让我走上正确的道路吗?!
答案 0 :(得分:2)
如果你希望你的控制器上有一个double,就不要发送一个字符串(删除calEvent.start
周围的简单引号,否则你将这个字符串文字发送到服务器,显然无法转换为double):
$.getJSON(url, { theDate: calEvent.start }, function (data) {
alert(data.name);
});
还要确保calEvent.start
是有效的双倍值。
答案 1 :(得分:0)
尝试
public ActionResult GetWhoBowls(double? theDate)
由于您在{ "theDate": "calEvent.start" }
修改强>
不确定这是否会解决问题,但试试这个
var url = '@Url.Action("GetWhoBowls", "Home")';
$.getJSON(url, { theDate: "calEvent.start" }, function (data) {
alert(data.name);
});
并像这样修改动作结果
public ActionResult GetWhoBowls(double theDate)
{
return(data,JsonRequestBehavior.AllowGet);
}
如果您从客户端
发送null,这将给出相同的错误