asp.net - гиперссылка не работает - PullRequest
1 голос
/ 22 февраля 2010
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 ]

2 голосов
/ 22 февраля 2010

В ASP.NET гиперссылки должны быть URL-адресами, а не папкой на компьютере.

Если ваш файл находится на вашем сайте, попробуйте Sever.MapPath

0 голосов
/ 03 мая 2016

Я обнаружил, что (в контексте перенаправления на другую из ваших собственных веб-страниц), используя это: componenttent.NavigateUrl = "~ / page.aspx";

вместо этого:

componenttent.NavigateUrl = server.MapPath ("путь");

работал на меня. На server.MapPath создана ссылка File: //, чтобы браузер не разрешил ее.

Надеюсь, это кому-нибудь поможет, в некоторых случаях это не сработает, но сработало для моих индивидуальных требований.

0 голосов
/ 24 февраля 2010

Проверьте этот вопрос. Решение может работать и для вас.

0 голосов
/ 22 февраля 2010

Это связано с ограничениями безопасности в браузере. Если вы генерируете ссылку "file://", она относится к файловой системе пользователя .

Теоретически, если браузеры разрешают такие типы ссылок, злоумышленники могут удаленно обнаруживать информацию о файловой системе пользователя. Таким образом, современные браузеры не допускают ссылки такого типа.

К сожалению, это не очень хорошо задокументировано, и большинство браузеров допускают ссылки и просто отбрасывают поведение - поэтому при нажатии на них ничего не происходит. Хороших обходных путей тоже нет.

См. Мой вопрос здесь для дальнейшего обсуждения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...