2013-06-28 4 views
0

У меня есть Asp: Гиперссылка на странице aspx, и я динамически настраиваю URL-адрес текста и навигации, но когда страница отображает добавление относительного пути моего веб-сайта в рендеринг href. Я не знаю почему?asp: hyperlink navigate url добавление относительного пути к url ​​

ASPX

<asp:HyperLink runat="server" ID="charityNameText"></asp:HyperLink> 

КОД-ЗА (Page Load Event)

//Getting data from database 

charityNameText.Text = entryDetails.RegisteredCharityName; 
charityNameText.NavigateUrl = "www.facebook.com"; 
charityNameText.Target = "_blank"; 

Вынесено HTML

<a id="ctl00_PageContent_CompetitionsEntries_ctl06_charityNameText" href="../../ConLib/Custom/www.facebook.com" target="_blank">save the childrens</a> 


../../ConLib/Custom/ is the path where this file is located. 

Plase помощь

ответ

3

Существуют различные решения для Вашего случая. Мой лучший подход будет использовать класс System.UriBuilder.

String myUrl = "www.facebook.com"; 
UriBuilder builder = new UriBuilder(myUrl); 
charityNameText.NavigateUrl = builder.Uri.AbsoluteUri; 

UriBuilder добавляет протокол (HTTP) в вашем случае к URL-адресу, который вы загружаете и инициализирует экземпляр класса Uri с полной URL. Используйте свойство AbsoluteUri.

Для более сложных случаев можно использовать Regex:

 String myUrl = "www.facebook.com"; 
     System.Text.RegularExpressions.Regex url = new System.Text.RegularExpressions.Regex(@"/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/", System.Text.RegularExpressions.RegexOptions.IgnoreCase); 

     System.Text.RegularExpressions.MatchCollection matches = url.Matches(myUrl); 

     foreach (System.Text.RegularExpressions.Match match in matches) 
     { 
      string matchedUrl = match.Groups["url"].Value; 
      Uri uri = new UriBuilder(matchedUrl).Uri; 
      myUrl = myUrl.Replace(matchedUrl, uri.AbsoluteUri); 
     } 
+0

Я попробую это ... НО я использую HyperLink на многих страницах, и я использую response.redirect и, похоже, не проблема с ними. потому что я использую данные из базы данных. –

+0

ДА ..... Я использовал простой подход к созданию URL-адреса с помощью UriBuilder, и все работает как ожидалось ... –

+1

все работает нормально, когда я использую UriBuilder для создания URL-адреса ... –

0

Я думаю, вы должны использовать http://www.facebook.com

Надежда, что помогает

+0

хорошо я уже упоминал www.facebook.com для целей тестирования. На самом деле я получаю данные из базы данных и устанавливаю там URL. –

1

Вы должны добавить протокол к началу URL: http://wwww.facebook.com

+0

хорошо я упомянул www.facebook.com для целей тестирования. На самом деле я получаю данные из базы данных и устанавливаю там URL. –