我了解您可以控制 Windows 窗体 Web 浏览器控件中显示的 ASP.NET 网页,因此您可以编辑该页面并按照您想要的方式构建它。
如果这是真的,托管网络浏览器或普通 IE 会话中的行为是相同的,我建议在 asp.net 网页表单页面中创建一堆超链接或按钮,每个都有一个特定的 ID,比如 ID要下载的文件。然后您可以创建一个处理程序或 button_click 事件处理程序,您可以在其中通过单击的按钮/链接关联的文件 ID 获取文件的字节 [],或者如果您启动了处理程序调用,则从查询字符串中获取文件的字节 [],然后开始向下流式传输到浏览文件内容,浏览器会为你做所有需要的事情。
例如,作为起点,从这里获取的一些代码:http: //social.msdn.microsoft.com/Forums/en-US/silverlightnet/thread/d6a5087f-43b1-4782-95f1-d1376130d2c8
向您展示了一种从页面加载中执行此操作的可能方法,诀窍是调用为GetDocument
您获取正确的文件内容(在这种情况下来自查询字符串,想象一下如果我们在处理程序处理方法中)并返回一个DocumentInfo
包含字节的类。你也不需要这个 DocumentInfo,你可以有一个方法,byte[]
例如通过 File Id 返回...
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
string queryString = this.Request.QueryString.ToString();
if (string.IsNullOrEmpty(queryString)) return;
DocumentInfo documentInfo = GetDocument(queryString);
if (!documentInfo.HasValue) return;
Response.ClearHeaders();
Response.ClearContent();
Response.AppendHeader("Content-Length", documentInfo.Value.Content.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename=Test.doc");
Response.BinaryWrite(documentInfo.Value.Content);
Response.End();
}
}