2010-07-21 12 views
3

J'ai une page profondément imbriquée. Et celui qui est dans le chemin de la racine. A l'intérieur de la page profondément imbriquée, j'ai une balise d'ancrage qui est censée naviguer vers une autre page (qui n'est pas dans la racine, mais il est facile de spécifier un chemin relatif racine).asp.net: référence à une page relative à la racine dans les contrôles html normaux non côté serveur

je l'ai fait ce qui suit en essayant de spécifier un chemin relatif racine:

<a href="~/home/main.aspx">Home</a> -> Celui-ci me donne une erreur 404. Il n'est pas capable de résoudre ~ partie du chemin racine.

L'autre option est de se déplacer jusqu'à un répertoire:

<a href="../../../home/main.aspx">Home</a> -> Ceci est le mal de tête.

Alors j'ai essayé ceci:

<a href="/home/main.aspx">Home</a> -> Cela m'a donné un nouveau 404. Il a simplement supprimé ce qui venait après la pièce localhost:<port_number>/ et l'a apposée avec /home/main.aspx.

Quel est le moyen de spécifier un chemin relatif racine ici?

PS: Je suppose que la racine chemin relatif résoudra pour le serveur contrôle

Répondre

6

Un tilde (~) est uniquement reconnue par la méthode WebControl.ResolveUrl, vous devrez appeler cette méthode sur la Page, qui est un WebControl

<a href='<%=ResolveUrl("~/home/main.aspx") %>'>Home</a> 
+0

+1 Thanx pour l'info – deostroll

+0

Mais je aussi genre de fixer cela en rendant la propriété 'Virtual Path'' '/'. Cela a aidé ... – deostroll

+1

@deo - '/' et '~ /' font référence à 2 chemins différents - bien qu'ils puissent sembler identiques dans votre environnement de développement sur votre serveur, ils peuvent être différents. '/' est la racine absolue du serveur alors que '~/'est la racine absolue de l'application en cours. Voyez-vous la différence? Vous ne voulez généralement utiliser que ~ ~/'. Assurez-vous que lorsque vous utilisez '/' vous comprenez où il * pointera. –

0

Si vous utilisez le contrôle de lien hypertexte asp.net vous pourrez utiliser le « ~ ». Si vous ne voulez pas utiliser un servercontrol je pense que votre coincé. '/' Vous amènera à la racine du site sur un lien normal mais vous devez vérifier comment vous avez configuré le répertoire virtuel.