Question

Cet article explique donc comment implémenter la réécriture d'URL dans une application ASP.NET pour obtenir "URLs amicales". Cela fonctionne parfaitement et est idéal pour envoyer un utilisateur à une page spécifique, mais est-ce que quelqu'un connaît une bonne solution pour la création de "Amical"? Des URL dans votre code lorsque vous utilisez l’un des outils référencés?

Par exemple, le fait de répertorier un lien à l'intérieur d'un contrôle asp.net sous le nom ~ / mypage.aspx? product = 12 lorsqu'il existe une règle de réécriture pose problème, car vous créez un lien vers le contenu de deux manières différentes.

Je connais bien l’utilisation de DotNetNuke et de FriendlyUrl où il existe un " NavigateUrl " méthode qui obtiendra le code URL convivial du ré-auteur, mais je ne trouve pas d’exemple sur la façon de procéder avec UrlRewriting.net ou les autres solutions disponibles.

Idéalement, j'aimerais pouvoir obtenir quelque chose comme ça.

string friendlyUrl = GetFriendlyUrl("~/MyUnfriendlyPage.aspx?myid=13");

MODIFIER: je recherche une solution générique, pas quelque chose que je dois implémenter pour chaque page de mon site, mais potentiellement quelque chose qui puisse correspondre aux règles dans le sens opposé.

Était-ce utile?

La solution

Voir System.Web.Routing

Le routage est différent de la réécriture. L'implémentation de cette technique nécessite des modifications mineures de vos pages (notamment, tout code accédant aux paramètres de chaîne de requête doit être modifié), mais elle vous permet de générer des liens en fonction des itinéraires que vous définissez. Il est utilisé par ASP.NET MVC, mais peut être utilisé dans n’importe quelle application ASP.NET.

Le routage fait partie de .Net 3.5 SP1

Autres conseils

Créez une classe UrlBuilder avec des méthodes pour chaque page comme suit:

public class UrlBuilder
{
    public static string BuildProductUrl(int id)
    {
        if (true) // replace with logic to determine if URL rewriting is enabled
        {
            return string.Format("~/Product/{0}", id);
        }
        else
        {
            return string.Format("~/product.aspx?id={0}", id);
        }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top