Ich arbeite an einer asp.net-App. Der folgende Link funktioniert im IE, aber nicht in FF.
<a href="~/BusinessOrderInfo/page.aspx" >
Ist die Tilde nicht etwas, das nur in asp.net-Serversteuerelementen verwendet werden kann? Wo wird es durch einen tatsächlichen Pfad ersetzt?
Ist es möglich, die Tilde in einem Ankertag zu verwenden? Wenn ja, was bedeutet das?
Wenn ich an der Wurzel bin, funktioniert der Link
www.myserver.com/default.aspx, click the link, ok!
www.myserver.com/otherpart/default.aspx, click the link, not ok!
Der von ASP.NET generierte Link lautet:
www.myserver.com/otherpart/~BusinessOrderInfo/page.aspx
Ist das beabsichtigt?
~
heißt übrigens Application Root Operator, falls Sie danach googelnAntworten:
Sie haben Recht, es funktioniert nur in Serversteuerelementen. Sie haben folgende grundlegende Optionen:
Wechseln Sie zu
HyperLink
, um als Web Control ausgeführt zu werden :<asp:HyperLink NavigateUrl="~/BusinessOrderInfo/page.aspx" Text="Whatever" runat="server" />
Oder führen Sie den Anker auf der Serverseite als HTML-Steuerelement aus :
<a href="~/BusinessOrderInfo/page.aspx" runat="server" >
Oder verwenden Sie
Page.ResolveUrl
:<a href="<%= Page.ResolveUrl("~/BusinessOrderInfo/page.aspx") %>">...</a>
quelle
<a href="https://stackoverflow.com/BusinessOrderInfo/page.aspx" >
für den absoluten Pfad verwenden. Tun Sie dies auch nicht, da dies nur funktioniert, wenn Sie Ihre Web-App im Stammverzeichnis der Domain (z. B. www.example.com) bereitstellen. Es funktioniert jedoch nicht, wenn Sie in einem Unterverzeichnis bereitstellen (z. B. www.example.com/MyAppRoot). Es ist immer am besten sicherzustellen, dass Sie App-Root-bezogene URLs (die mit dem~
) verwenden, um sicherzustellen, dass Ihre Web-App portabel ist.Response.Redirect("webform2.aspx")
oderResponse.Redirect("~/webform2.aspx")
?HTML-Steuerelemente können durch Hinzufügen des Attributs runat = "server" in Serversteuerelemente umgewandelt werden.
<a href="~/BusinessOrderInfo/page.aspx" runat="server">
quelle
Die Tilde verweist auf das Anwendungsstammverzeichnis und wird in Steuerelementeigenschaften wie NavigateUrl korrekt übersetzt.
Ich verstehe, dass wenn Sie es in einfachen HTML-Tags verwenden, es nicht von ASP.Net übersetzt wird.
quelle
Wenn Sie Tilde entfernen und nur Schrägstrich verwenden, erzielen Sie dasselbe Ergebnis, dh Sie zeigen auf den Stammordner in der aktuellen Domäne:
<a href="/BusinessOrderInfo/page.aspx" >
quelle
Diese Funktion kann auch zum Auflösen von Pfaden für Nicht-Server-Elemente verwendet werden
VirtualPathUtility.ToAbsolute($"~/App_Themes/Default/Icons/myimage.gif")
quelle