7
votes

Obtenir l'URL avec le répertoire virtuel inclus?

Je maintient un site Web Web Forms ASP.NET (et je fais un site web signifie, ce n'est pas une application Web) strong> et certains des liens statiques sont cassés car ils l'hébergent avec un virtuel Répertoire.

<asp:HyperLink id="ContactUsLink"
    runat="server"
    Enabled="true"
    NavigateUrl="/ContactUs.aspx"
    Text="Contact Us">
</asp:HyperLink>


0 commentaires

4 Réponses :


14
votes

Essayez:

Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath


0 commentaires

2
votes

Vous devez préfixer vos adresses avec un ~. donc "~ / contact.aspx" sur n'importe quel contrôle de serveur Runat = serveur. Cela ne fonctionnera pas pour une étiquette standard. Vous pouvez ajouter Runat = Server à une étiquette normale pour en faire un contrôle du serveur.

L'heure d'exécution verra le ~ et le rendre relatif à ce que vous courez comme. P>

<asp:HyperLink id="ContactUsLink"
    runat="server"
    Enabled="true"
    NavigateUrl="~/ContactUs.aspx"
    Text="Contact Us">
</asp:HyperLink>


0 commentaires

2
votes

Vous pouvez utiliser le ~ qui résoudra votre URL correctement, de sorte que votre contrôle de lien hypertexte devient ceci:

<asp:HyperLink id="ContactUsLink"
    runat="server"
    Enabled="true"
    NavigateUrl="~/ContactUs.aspx"
    Text="Contact Us">
</asp:HyperLink>


1 commentaires

Le ~ est essentiel!



0
votes
window.location.protocol + "/" +(window.location.host + "/" + window.location.pathname);

0 commentaires