2010-02-22 2 views
1
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); 
    } 


} 

При выполнении этого кода гиперссылки генерируются, но они не работают. ничего не происходит, когда я нажимаю на них.asp.net - Гиперссылка не работает

Пожалуйста, помогите.

ответ

2

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

Если ваш файл на вашем сайте попытаться Sever.MapPath

+0

Нет моего файла на сайте. Это может быть где угодно в системе. – Akshay

+1

@Akshay: Ваш код выполняет серверную сторону, и вы пытаетесь заставить его работать на стороне клиента? Вы должны использовать что-то еще; ASP.NET не является инструментом для того, что вы, по-видимому, пытаетесь сделать. – Randolpho

+0

@ Randolpho: Но когда мы даем URL-адрес любого файла, который в папке веб-сайта тогда работает. Проблема возникает, когда navigateurl гиперссылки нацелен на любой внешний файл в системе, который не находится в папке веб-сайтов. – Akshay

0

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

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

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

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

0

Отъезд this вопрос. Решение может работать и на вас.

0

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

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

compontent.NavigateUrl = Server.MapPath ("путь");

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

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

Смежные вопросы