Html 如何避免;“未保存的表单更改”;提交回复后是附件吗?

Html 如何避免;“未保存的表单更改”;提交回复后是附件吗?,html,asp.net-mvc-3,forms,http-post,Html,Asp.net Mvc 3,Forms,Http Post,别在意下面这些。我发现我的问题是由应用程序中其他地方的js代码引起的 我的申请表没有提交。这将转到控制器上的操作方法,该方法执行以下操作: Response.ClearHeaders(); Response.AppendHeader("Content-Disposition", "attachment; filename=SQLQueryResult.csv"); Response.AppendHeader("Content-Length", sb.Length.ToString()); Res

别在意下面这些。我发现我的问题是由应用程序中其他地方的js代码引起的

我的申请表没有提交。这将转到控制器上的操作方法,该方法执行以下操作:

Response.ClearHeaders();
Response.AppendHeader("Content-Disposition", "attachment; filename=SQLQueryResult.csv");
Response.AppendHeader("Content-Length", sb.Length.ToString());
Response.ContentType = "text/csv";
Response.Write(sb.ToString());
Response.End();
return null;
这很有效。浏览器将此视为要下载的附件。但是,浏览器也会显示“未保存的表单更改”提示


有没有办法避免这个提示?当它是一个普通的asp.net页面时,我没有这个问题,但现在我已经转换到mvc,我有了

很难说,但您展示的代码是一种反MVC模式。以下是提供文件下载服务的MVC控制器操作的样子:

public ActionResult Download()
{
    StringBuilder sb = ...
    var csv = Encoding.UTF8.GetBytes(sb.ToString());
    return File(csv, "text/csv", "SQLQueryResult.csv");
}

如您所见,控制器操作不会写入响应。那不是他们的目的。它们返回操作结果。正是这些行动结果应该注意向客户展示结果

这是一个很好的建议。我已经修改了我的代码,现在它更漂亮了,但我仍然有问题。我发现我的问题是由应用程序中其他地方的js代码引起的。