我正在编写一个报告工具,您可以在其中直接显示报告或将其下载为Excel文件。如果您只是想在页面上显示它,网站将按预期重新加载。如果它作为excel文件下载,下载工作,但页面不会重新加载。这对我来说是一个问题因为我不知道如何在之后禁用加载动画。通过对响应对象的写入操作完成下载。这是代码:
private void ExcelExport(DataTable outList)
{
ViewBag.Reload = true;
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=report.xls");
Response.ContentType = "application/ms-excel";
Response.Charset = "";
Response.Output.Write(Excel.GetXml(outList));
Response.Flush();
Response.End();
}
从我的控制器中的ActionResult方法调用代码(ExcelExport方法也位于其中):
public ActionResult WisPriceMatrix(string cc, string sl, string exp)
{
ViewBag.StorageLocations = this.StorageLocations;
ViewBag.WisPriceMatrixReport = null;
int cleanCode = 3;
if ((cc != null && cc != string.Empty && Int32.TryParse(cc, out cleanCode)) || (sl != null && sl != string.Empty))
{
sl = sl == string.Empty ? null : sl;
ViewBag.ParameterSl = sl;
ViewBag.ParameterCleanCode = cleanCode;
DataTable outList = dc.GetWisPriceMatrix(sl, cleanCode);
if (exp == null || exp == string.Empty || exp != "1")
{
ViewBag.WisPriceMatrixReport = outList;
}
else
{
if (outList.Count > 0)
{
this.ExcelExport(outList);
}
else
{
ViewBag.NoResults = "1";
}
}
}
return View();
}
任何想法我怎么能强迫页面重新加载?
我尝试创建一个ViewBag变量,该变量表明重新加载是neede并通过JavaScript对其做出反应,但由于页面没有刷新,因此这是成功的; - )。
答案 0 :(得分:0)
在您的情况下,为了重新加载页面,您可以使用Viewbag
并在控制器上设置Viewbag
值Viewbag.data="reload"
,然后在视图中选中Viewbag
为
$(document).ready(function(){
if('@Viewbag.data' == "reload")
{
window.location.reload(true);
}
});
或者您可以代替return View()
使用return RedirectToAction("WisPriceMatrix")
作为RedirectToAction
创建新的http(302)
请求并重新加载页面。