我有一个Create ActionMethod,类似于:
[AcceptVerbs(HttpVerbs.Post)]
public ActionMethod Create(Journey journey)
{
if (Request.IsAjaxRequest())
{
//Save values
return Json(new { JourneyID = journey.JourneyID } );
}
}我传入的Journey对象来自我的LINQ2SQL数据模型。我使用JQuery.Post函数从我的Javascript调用上面的ActionMethod,如下所示:
var journeyData = {
CustomerID: $('#CustomerID').val(),
JourneyID: $('#JourneyID').val(),
EstimatedTravelTime: $('#EstimatedTravelTime').val(),
RouteName: $('#RouteName').val(),
.....
};
$.post('/Journey/Create',
journeyData,
function(jsonResult) {
//deal with result
},
'json'
);我遇到的问题是,在ActionMethod中,Journey.RouteName总是作为null返回,但我传递回的JSON有一个值,我使用以下命令进行检查
alert(JSON.stringify(journeyData));并且在生成的JSON对象中,RouteName具有一个值,例如“去工作吧”。你知道为什么这不是在ActionMethod中设置的吗?我传回的所有其他值都设置得很好。
发布于 2009-10-19 16:17:29
这只是一个试错建议:
我要做的第一件事是用一些不同的东西来重命名"RouteName“参数,因为"RouteName”也是一些MVC重定向方法的属性。
发布于 2009-10-19 15:19:27
您是否检查了要发送到服务器的请求JSON对象?
您是否尝试过在字符串属性值中添加引号?
如下所示:
var journeyData = {
CustomerID: $('#CustomerID').val(),
JourneyID: $('#JourneyID').val(),
EstimatedTravelTime: $('#EstimatedTravelTime').val(),
RouteName: '"' + $('#RouteName').val() + '"',
.....
};发布于 2009-10-19 23:16:54
有几件事需要考虑。我猜这已经存在了,但是您的模型必须在RouteName属性上有一个getter和setter才能被正确绑定。另一种想法是,您可能没有建立强绑定。这通常是作为视图的页面声明的一部分(例如Inherits="System.Web.Mvc.ViewPage"),但我不确定这是在你的帖子之前发生的。
https://stackoverflow.com/questions/1589272
复制相似问题