是否可以在asp.net mvc 3中使用ajax查询发送模型对象?我尝试这个代码,但它无法正常工作。
$.get($(target).data('path')+'list/'+@ModelpagedList.ParentID+'?page='+page+'?searchObject='+@Model, function (data) {
$(target+' .data-content').unblock();
window.setTimeout(function()
{
$(target).replaceWith(data);
},200);
});
return false;
我想发送searchParam=@Model
答案 0 :(得分:4)
是否可以在asp.net mvc 3中使用ajax查询发送模型对象
当然,您可以将其作为JSON发布:
var url = $(target).data('path') + 'list/' + @ModelpagedList.ParentID;
var data = {
page: page,
searchObject: @Html.Raw(Json.Encode(Model))
};
$.ajax({
url: url,
type: 'POST',
data: JSON.stringify(data),
contentType: 'application/json',
success: function(result) {
$(target + ' .data-content').unblock();
window.setTimeout(function() {
$(target).replaceWith(data);
}, 200);
}
});
您的控制器操作将如下所示:
[HttpPost]
public ActionResult SomeAction(int parentId, int page, MyViewModel searchObject)
{
...
}
但恕我直言,所有这些努力都没有必要。不需要像这样浪费你的带宽。只需发送允许它从后端检索它的模型的标识符 - 就像在渲染视图时最初检索它一样:
[HttpPost]
public ActionResult SomeAction(int id, int parentId, int page)
{
...
}
现在你只能发送模型的id,然后在你的控制器动作中使用id检索相应的模型对象。只有值得从客户端向服务器发送可能已被用户修改的信息。这不是你的情况。你只是让这个模型无用地四处旅行。
答案 1 :(得分:1)
创建一个将对象转换为json的扩展方法
public static class JsonExtensions
{
public static string ToJson(this Object obj)
{
return new JavaScriptSerializer().Serialize(obj);
}
}
然后
var model = <%= Model.ToJson() %>
$.get($(target).data('path')+'list/'+@ModelpagedList.ParentID+'?page='+page+'?searchObject='+model, function (data) {
$(target+' .data-content').unblock();
window.setTimeout(function()
{
$(target).replaceWith(data);
},200);
});
return false;