Следующий код экспорта работает в IE7 и FF, но не в IE8. Что нужно изменить, чтобы это работало в IE8?
public override void ExecuteResult(ControllerContext context)
{
this.WriteFile(HtmlTable);
}
void WriteFile(string content)
{
HttpContext context = HttpContext.Current;
context.Response.Clear();
context.Response.AddHeader("content-disposition", "attachment;filename=\"" + _fileName + "\"");
context.Response.Charset = "";
//context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = "application/ms-excel";
context.Response.Write(content);
context.Response.End();
}
Вот как мы называем это с внешнего интерфейса:
function resultsGridExportToExcel()
{
var exportUrl = '/extranet/mvc/Indications.cfc/SavedIndicationsExportToExcel?id=3';
var postData = jQuery('#resultsGrid').jqGrid('getGridParam', 'postData');
$.each(postData, function(key, value)
{
exportUrl += '&'+key+'='+encodeURIComponent(value);
});
$('#SaveIndicationsExportForm').attr('action', exportUrl).submit();
}
А вот метод контроллера:
[HttpPost]
public System.Web.Mvc.ActionResult SavedIndicationsExportToExcel(string sidx, string sord, int page, int rows)
{
SavedIndication indication = new SavedIndication();
var jqGridData = indication.GetSavedIndications(sidx, sord, 1, Int32.MaxValue);
var gridDefinition = SavedIndication.GridDefinition;
string filename = "Indications Calculator - Saved Indications";
string htmlTable = jqGridData.RenderHtmlTable(gridDefinition.RetrieveColumnHeaders());
htmlTable = Chatham.Web.Controllers.ExcelResult<string>.RemoveImages(htmlTable);
return new ExcelResult() { FileName = filename, HtmlTable = htmlTable };
}
Он полностью отлаживается, без ошибок, работает нормально, но не генерирует вывод в IE8, только в IE7 и FF