【发布时间】:2013-11-06 03:21:18
【问题描述】:
如何通过AJAX 调用将dynamic 数据传递给MVC Controller?
Controller:
public JsonResult ApplyFilters(dynamic filters){
return null;
}
AJAX 电话:
$(':checkbox').click(function (event) {
var serviceIds = $('input[type="checkbox"]:checked').map(function () {
return $(this).val();
}).toArray();
//alert(serviceIds);
$.ajax({
type: 'GET',
url: '/home/ApplyFilters',
data: JSON.stringify({
name: serviceIds
}),
contentType: 'application/json',
success: function (data) {
alert("succeeded");
},
error: function (err, data) {
alert("Error " + err.responseText);
}
});
//return false;
});
理想情况下,filters 将包含 serviceIds 作为属性
例如这样:filters.ServiceIds。
我有另一个日期范围的过滤器,并且会像这样添加一个过滤器:filters.DateRange。
而服务器端将过滤器作为dynamic 对象在ApplyFilters()中获取
【问题讨论】:
-
如果您使用 AJAX 调用来调用操作,过滤器对象会是什么样子?
-
看起来像这样:{object},无法展开。
-
dynamic对象在运行时进行评估,因此将返回更改为return Json(filters)以便您可以看到响应中返回的实际数据。 -
没错,但我也可以转换它,因为我已经知道
object是什么类型。但这失败了,因为某些数据没有传递“好”。
标签: c# jquery ajax asp.net-mvc dynamic