protected void Button1_Click(object sender, EventArgs e)
{
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(@"C:\Documents and Settings\Admin\Desktop\New Folder\"+TextBox1.Text);
foreach (System.IO.FileInfo file in dir.GetFiles())
{
HyperLink h = new HyperLink();
h.NavigateUrl = "file:///c:/Documents and Settings/Admin/Desktop/New Folder/" + TextBox1.Text + "/" + file.Name;
h.Text = file.Name;
PlaceHolder1.Controls.Add(h);
}
}
执行此代码时,会生成超链接但它们无法正常工作。 当我点击它们时没有任何反应。
请帮忙。
答案 0 :(得分:2)
在ASP.NET中,超链接必须是URL而不是计算机上的文件夹。
如果您的文件在您的站点中,请尝试Sever.MapPath
答案 1 :(得分:0)
这是由于浏览器中的安全限制。如果您生成“file://
”链接,则它与用户的文件系统相关。
理论上,如果浏览器允许这些类型的链接,攻击者可以远程发现有关用户文件系统的信息。因此,现代浏览器不允许这种类型的链接。
不幸的是,这并没有很好地记录,并且大多数浏览器都允许链接并且只是放弃行为 - 所以当您单击它们时没有任何反应。也没有任何好的解决方法。
请参阅我的问题here以进一步讨论。
答案 2 :(得分:0)
查看this问题。解决方案也可能适合您。
答案 3 :(得分:0)
我发现(在重定向到您自己的另一个网页的上下文中)使用: compontent.NavigateUrl ="〜/ page.aspx&#34 ;;
而不是:
compontent.NavigateUrl = server.MapPath(" path");
为我工作。 server.MapPath创建了一个File://链接,因此浏览器不允许这样做。
希望这有助于某些人,但在某些情况下它不会起作用,但它符合我的个人要求。