asp.net - 超链接无法正常工作

时间:2010-02-22 20:10:05

标签: asp.net file hyperlink

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);
    }


}

执行此代码时,会生成超链接但它们无法正常工作。 当我点击它们时没有任何反应。

请帮忙。

4 个答案:

答案 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://链接,因此浏览器不允许这样做。

希望这有助于某些人,但在某些情况下它不会起作用,但它符合我的个人要求。

相关问题