我正在MVC中编写一个应用程序来输出表View。表中的一列包含一个动作链接,用于加载jQuery UI对话框。当我从对话框保存数据时,我调用GridRefresh控制器方法,该方法抓取新存储的数据并通过ajax返回部分视图,以使用新的部分视图html重新绘制网格。我使用$('#mainGrid')。html(data)jQuery调用来覆盖页面上的html。这个调用正确,并且正确地替换了Div的内容,但每次调用RefreshGrid函数时,我最终都会发生4mb的泄漏。我尝试过在线文章中的大量修复,包括:使用.empty(),. remove(),.replaceWith(),清除jQuery.fragments,使用javascript清除div元素(getElementById)。似乎没什么用。
注意: html视图的响应数据大小约为1.2MB,这可能导致我的麻烦吗?我正在使用MVC3与jQuery 1.10.2和IE9
MVC控制器
[HttpPost]
public PartialViewResult RefreshGrid(DateTime effectiveDate, String searchVal)
{
if (Request.IsAjaxRequest())
{
var gridModel = new GridModel();
LoadGridDataFromDB(effectiveDate,searchVal);
return PartialView("Grid", gridModel);
}
return null;
}
的Ajax / jQuery的
$.ajax({
url: "Home/RefreshGrid",
type: "post",
data: {
effectiveDate: effectiveDate,
searchVal: searchVal
},
dataType: "html",
success: function(data){
alert("success");
$("#mainGrid").html(data);
},
error:function(){ alert("failure");}
});
答案 0 :(得分:1)
您是否尝试使用普通MVC完成相同的功能 - Ajax.BeginForm应该可以解决问题。我已经多次使用它,我从来没有注意到任何内存泄漏。一个简单的例子是
View.cshtml
@using (Ajax.BeginForm("Action_name", "Controller_name", new AjaxOptions {
InsertionMode = InsertionMode.Replace,
HttpMethod = "POST"
...})
{
Html.Partial("PartialView_name")
}