如何从 jQuery 传递结构化数据?
这是我在 jQuery 中的代码
function link() {
var items = $.map($('.trSelected', grd), function (i) {
return i.id.substr(3);
});
// alert(items.length);
// alert(items.join(', '));
$.ajax({ url: '/Pos/Link', type: 'POST', datatype: 'json',
data: ( { PosId: '@Model.PosId', PosDetailIds: items } ),
success: function (result) {
grd.flexReload();
alert('saved.');
}
});
}
这是我在 ASP.NET MVC 控制器中的代码
[HttpPost]
public JsonResult Link(PosLink posLink)
{
var svc = ServiceWirer.GetTxServiceInstance();
svc.Pos_Link(posLink);
return Json(new { HasError = false });
}
由于我不知道的原因,只填充了 PosId,未填充 PosDetailIds
[更新]
@Raynos:
我什至尝试过这个,但是也不行:
public JsonResult Link(Guid PosId, Guid[] PosDetailIds)
仅填充了 PosId,PosDetailIds 仍为 null
这是 PosLink 结构:
public class PosLink
{
public Guid PosId { get; set; }
public Guid[] PosDetailIds { get; set; }
}
Here's my code in jQuery
function link() {
var items = $.map($('.trSelected', grd), function (i) {
return i.id.substr(3);
});
// alert(items.length);
// alert(items.join(', '));
$.ajax({ url: '/Pos/Link', type: 'POST', datatype: 'json',
data: ( { PosId: '@Model.PosId', PosDetailIds: items } ),
success: function (result) {
grd.flexReload();
alert('saved.');
}
});
}
Here's my code in ASP.NET MVC controller
[HttpPost]
public JsonResult Link(PosLink posLink)
{
var svc = ServiceWirer.GetTxServiceInstance();
svc.Pos_Link(posLink);
return Json(new { HasError = false });
}
For reasons unknownst to me, only the PosId is populated, the PosDetailIds is not populated
[UPDATE]
@Raynos:
I even tried this, but no go too:
public JsonResult Link(Guid PosId, Guid[] PosDetailIds)
Only the PosId is populated, the PosDetailIds is still null
Here's the PosLink structure:
public class PosLink
{
public Guid PosId { get; set; }
public Guid[] PosDetailIds { get; set; }
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我现在解决了它,我使用 jQuery 的 $.param
更好:
在这里找到原理: http://forum.jquery.com/topic/jquery-1-4-breaks-asp-net-mvc-parameter-posting
I solved it now, I used jQuery's $.param
Way much better:
Rationale found here: http://forum.jquery.com/topic/jquery-1-4-breaks-asp-net-mvc-parameter-posting
您无法将 JSON 绑定到开箱即用的方法参数。 参见这里有一个使用 ValueProviders 的解决方案。
You can't bind JSON to method parameters out-of-the-box. See here for a solution using ValueProviders.