2011-11-09 99 views
4

我有列出存储在其中的文件的Web应用程序。强制IE在新窗口中打开下载

每个项目都有一个超链接,点击后,会强制打开/保存对话框出现。

现在,如果我指点一下,比方说,一个Word文档的链接并选择“打开”它在它自己的窗口中打开,如你所愿。但是,如果该文件是HTML文件,并且选择了“打开”选项,它会在浏览器中打开页面[正确],但会在我用来选择文档[窗口]的窗口中打开。

因此,这个问题:是否有可能强制打开/保存对话框的“打开”选项,在新窗口中打开文档?

编辑: 强制要打开的文档超链接不只是一个指针文件(有许多原因)。该.NavigateUrl属性包含的JavaScript函数的调用,这个功能使得一个Ajax请求到应用程序本身,从安全存储获取文档并将其呈现给用户的浏览器作为附件(内容处置:附件)

进一步编辑: JavaScript函数只是一个Ajax回调到该页面。 这个的结果是使页面显示在IFrame中。此页面直接写入到响应对象如下:

Response.ContentType = "application/octet-stream"; 
Response.AddHeader("Content-Disposition", String.Format("attachment;filename=\"{0}\"", FileName)); 
Response.AddHeader("Content-Length", String.Format("{0}", length)); 
Response.Flush(); 
Response.Close(); 

我想,如果可能改变“打开”按钮,在出现的打开/保存对话框中的动作,这将是什么我会在这个代码中强制执行它。

如果它的确与众不同,这是用C#编写一个.net应用程序V4.0。

我知道的好和坏打开新窗口的,但是这是一个私人的应用程序和它的客户想要什么。

+5

大约只需添加'目标=“_空白”'来的链接是什么? –

+0

ASP.NET?的WebForms? MVC? – jrummell

+0

@ jrummell WebForms。 –

回答

5

而不必每个链接的指向基本页面中的JS函数尝试这样做...

让每个链接指向一个URL(如/GetFileContent.aspx?fileid=123),并有该页面在加载文件之前执行必要的逻辑。保持你的ContextType和响应头代码原样。

每个链接会打开一个新的窗口,是这个样子:

<a href="/GetFileContent.aspx?file=123" target="_blank">filename.doc</a> 
+0

我会给它一个去。 –

+0

得分!人群狂野。 –

+0

非常好,很高兴我能帮助斯图尔特。 – kingdango