asp.net c#版 HyperLink1的NavigateUrl已绑定,如何实现单击出现下载对话框?

 我来答
liuwp526
2011-06-28 · TA获得超过726个赞
知道小有建树答主
回答量:488
采纳率:87%
帮助的人:82.8万
展开全部
要单击出现下载,必须:
1, 要定义下载文件扩展名有关的MIME 映射(比如你要下载文件filename.ddd,浏览器就会报错,因为.ddd扩展名没有在这里映射).
2, 在Web.config 文件中注册该类行的HTTP 处理程序,这将更改ASP.NET 调用你指定的HTTP 处理程序处理对具有该扩展名的资源的请求。(比如,你的URL扩展名是.txt .bmp等,会自己在浏览器打开,而不是下载,要这些文件,需要重新指定处理程序)(也可以直接修改这个类型的MIME实现下载,这个比重新指定处理程序要简单)
3. 某些已定义的扩展名可以直接下载,不用做其它设置.(这些类型下边有说明)

要设置 MIME 类型,请使用以下语法: %SystemRoot%\windows\system32\inetsrv\appcmd set config /section:staticContent /+[fileExtension='string',mimeType='string']
变量 fileExtension 字符串是文件扩展名,变量 mimeType 字符串是文件类型说明。
例如,要为扩展名为“.xyz”的文件添加 MIME 映射: appcmd set config /section:staticContent /+[fileExtension='.xyz',mimeType='text/plain']

或者也可以在IIS 管理器设置 MIME 类型,
打开 IIS 管理器。
展开 Web 服务器计算机的节点,展开 “站点”,然后展开 “默认网站”。
选择你的应用程序的节点。
显示 “功能视图”窗格。
点击里边的MIME,进行查看和编辑.

打开MIME列表,要想实现下载属于下列大类:(audio/.... text/..... video/..... image/......)的扩展名,因为这些扩展名都有默认打开方式,比如,text类的,直接用浏览器打开文本,audio的直接播放等等.
如果你是要下载文件的扩展名是属于这些大类的,你需要:
1. 直接在这里更改此扩展名对应的大类,比如修改.txt 类型为application/text
2. 注册该类型的HTTP 处理程序,这将使得ASP.NET处理具有该扩展名的资源的请求时调用你所指定的或你自己编写的HTTP处理程序处理此类型的资源,

MIME里边已经定义的扩展名,其大类是application的,都可以直接下载.
比如:
.xls application/vnd.ms-excel
application意思是.xls扩展名的文件,需要用其它应用程序打开
vnd.ms-excel 是指打开这个.xls文件的应用程序关联的类vnd.ms-excel,Excel 和类型vnd.ms-excel关联,
所以,要访问.xls结尾的URL, 会显示一个对话框, "打开" "保存" "取消",点击打开就用Excel直接打开文件.

其实,这些操作,都可以直接修改web.config文件内容就好,更快更直接,在这里说起来太麻烦,就不罗嗦了.
要想知道具体修改的地方,你可以先备份下web.config文件,然后按上边的方法修改,在比较下web.config前后的内容有什么地方不同就好.

另外有些扩展名是不能够让下载的,比如.config,如果能下载,相当于给了别人一个进入你服务器后台的钥匙
.asp .aspx等 这些文件设置成下载,就浏览不到你的网页了.
abcayad
2011-06-29 · TA获得超过145个赞
知道答主
回答量:144
采纳率:0%
帮助的人:150万
展开全部
给http响应头添加附件attachment,具体用法可以查资料.

如果用AddHeader的方法在HTTP消息头中加入Content-Disposition段,并指定其值为“attachment”,那 么无论这个文件是何类型,浏览器都会提示我们下载此文件,因为此时它认为后面的消息体是一个“附件”,不需要由浏览器来处理了。例如,在ASP.Net中 写入如下语句:
Response.AddHeader("Content-Disposition: attachment");
请求此页面是得到的结果如:
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.1
Date: Thu, 23 Mar 2006 07:54:53 GMT
Content-Disposition: attachment
Cache-Control: private
Content-Type: text/html; charset=utf-8
……
也 就是说,通过AddHeader函数可以为HTTP消息头加入我们自定义的内容。使用这种方法可以强制让浏览器提示下载文件,即使这个文件是我们已知的类 型,基于是HTML网页。如果想要让用户下载时提示一个默认的文件名,只需要在前面一句话后加上“filename=文件名”即可。例如:
Response.AddHeader("Content-Disposition: attachment; filename=mypage.htm");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
七终多E
2011-06-28 · TA获得超过1.4万个赞
知道大有可为答主
回答量:3756
采纳率:46%
帮助的人:3392万
展开全部
如果你转向成一个文件 IE会自动出现下载提示框的 如果你有迅雷或者其他的下载软件 也许出现的是迅雷或者下载工具的下载对话框
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-07-06
展开全部
NavigateUrl='<%# "tie.aspx?id="+DataBinder.Eval(Container.DataItem,"id") %>'
另外,团IDC网上有许多产品团购,便宜有口碑
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ran_wang_927
2011-06-28 · 超过47用户采纳过TA的回答
知道答主
回答量:239
采纳率:25%
帮助的人:70.3万
展开全部
直接把链接转像某一个文件 就OK了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式