NavigateUrl, направляющий к корню вместо внешнего веб-сайта

#asp.net #vb.net

#asp.net #vb.net

Вопрос:

Я знаю, что это, вероятно, действительно легко, но когда я делаю это:

 <asp:TemplateField ShowHeader="False">
    <ItemTemplate>
        <asp:HyperLink ID="hypGift1" runat="server" visible="true" NavigateUrl='<%# Eval("facebook") %>'><asp:Image ID="imgGift1" runat="server" width="55px" ImageUrl="~/files/images/icons/faceyProfile.png" /></asp:HyperLink>
    </ItemTemplate>
</asp:TemplateField>
 

Если Eval("facebook") есть , скажите «www.facebook.com/bla бла», то он пытается перейти к www.mysite.com/www.facebook.com/bla бла

Поэтому я попробовал следующее, но URL-адрес браузера изменился на about:blank#blocked

 If Not hypGift1.NavigateUrl.Contains("http") Then hypGiftURL.NavigateUrl = "https://" amp; hypGiftURL.NavigateUrl
 

Комментарии:

1. The ~ означает корень.

2. Да, я пытался добавить ~/, но это не сработало

3. Я имел в виду, что ты должен его убрать.

4. Ах, забыл, что это все еще было там после тестирования. Я удалил его, и если сохраненный URL-адрес, скажем facebook.com тогда все работает нормально. Если это www.facebook.com затем он переходит к www.mysite.com/www.facebook.com

Ответ №1:

Ах, разобрались. Я добавил //, где http не существовал в URL-адресе, подобном этому..

 If Not hypGiftURL.NavigateUrl.Contains("http") Then hypGiftURL.NavigateUrl = "//" amp; hypGiftURL.NavigateUrl
 

Комментарии:

1. Вы, вероятно, хотите использовать StartsWith вместо Contains .