2013-07-11 156 views
1

它可能不是正确的标题提出这个问题,因为当我搜索它给动态网址的结果下载。那不是我想要的东西......(至少我觉得是不是)如何做动态下载链接

我的问题是,我需要动态创建的列表,说通讯为例,列表获取C#代码使用循环创建和Response.Write()。源代码来自一个数据库,该数据库只包含时事通讯的位置来源,日期和名称。代码的基本输出是:

|News Letters 
|Date:  |Name:  |View button: |Download link: | 
|7/01/2013 |June News | [View] | [Download] | 
|8/01/2013 |July News | [View] | [Download] | 

或多或少...该表在循环中生成,因此它可以是任意长度。

我将如何去实现每个单独的新闻信的下载? HTML代码只是使用普通表格,而视图按钮是链接到源代码的href链接。

+1

该通讯的格式是什么? href链接到的是什么? – Winks

+0

其pdf文件,但它可能只是关于任何文件格式。问题仍然是一样的。 –

+0

这可能会帮助您开始:http://stackoverflow.com/questions/6358799/asp-net-programatically-bind-dataset-to-gridview – Asken

回答

2

更多信息。

<a href="link to newsletter.pdf" download>Download link</a> 

这将强制下载,而不是像正常打开pdf。

祝你好运!

+0

感谢:D它工作100% –

4

我不是100%如何试图返回信息,但这将采取SqlDataReader并将数据读取器响应中的每一行添加到表中的新行,并建立一个HTML字符串。

StringBuilder sb = new StringBuilder(); 
     sb.Append("<table><th>Date</th><th>Name</th><th>View</th><th>Download</th>"); 


     while (sqlDataReader.Read()) 
     { 
      sb.Append(string.Format("<tr><td>{0}</td><td>{1}</td><td>{2}</td><td><a href='{3}' download>Download</a></td></tr>", sqlDataReader["Date"], sqlDataReader["Name"], 
          sqlDataReader["LocationSource"], sqlDataReader["LocationSource"])); 
     } 

     sb.Append("</table>"); 

     return sb.ToString(); 

我做了小幅调整,发现我已经把下载的链接标签内。这是一个HTML 5功能,如果您使用HTML5可以将单词“下载”只是增加了HREF链路的末端,将强制下载而不是在浏览器中打开,在这里 Force a browser to save file as after clicking link

+0

不幸的是,这不工作,因为我也需要它。虽然是的,它会打开PDF文档,但我需要它直接下载PDF,而无需先打开它。 –

+2

更新了HTML 5修复程序来解决此问题 – rh072005

+0

这是完美的!正是我需要感谢的很多 –