2009-03-06 4 views
2

Je travaille sur un projet qui doit saisir l'URL actuelle et l'utiliser dans la route elle-même. Tout ce que je vois, la lecture et les tests permet à l'itinéraire de récupérer les éléments après l'URL du site. C'est ce que j'ai essayé et chaque fois il dit simplement que le site est vide (ce qui est probablement à cause du défaut de blanc). Pouvez-vous me jeter des os en permettant à la route d'utiliser également l'URL racine? L'objectif est un site Web qui traitera l'URL et me conduira à différents tripes une fois à l'intérieur de la vue.Transmettre l'URL du site Web dans la Route dans ASP.NET MVC

Voici le code que je l'ai essayé, mais pas de chance en dehors de localhost

  routes.MapRoute(
      "PageRouter", 
      "{site}/{*url}", 
      new { controller = "PageRouter", action = "RoutePage", site = "", url = "" } 
     ); 

Votre aide est grandement appréciée. Merci d'avance

Répondre

0

Que diriez-vous juste d'utiliser HttpContext.Request.RawUrl dans l'action du contrôleur. Il se peut que je manque quelque chose ici. D'où vient l'url que vous voulez lire? Est-ce la page actuelle ou une autre page?

+0

page actuelle est où il est à .... nous avons fondamentalement besoin d'utiliser l'URL de la source pour déterminer les modèles une fois que nous sommes à l'intérieur de la route L'espace réservé {site} dans la route semble être trop loin après RawUrl Je vais essayer de l'utiliser et d'offrir un commentaire sur comment cela a fonctionné – dodegaard

+0

Nathan .... serait-il est-il préférable de le faire dans le fichier Global.asax.cs à la place? Pouvez-vous récolter des informations à partir de la requête HttpContext.Request à ce moment-là? Nous devrons le faire à chaque requête entrant dans le système pour autoriser les modèles personnalisés – dodegaard

0

La réponse de Nathan fait partie de la réponse. Le HttpContext.Request.RawUrl permet l'accès à cette information mais dans le fichier Global.asax.cs à la place. Ceci est fait dans l'événement Application_BeginRequest. Mais l'astuce (et s'il vous plaît commentez si quelqu'un connaît une manière plus élégante de faire ceci) mais nous injectons l'Url étant employé dans le chemin d'itinéraire restant ainsi il peut être pris dans la méthode de MapRoute. Le site "http://subdomain.domain.net/url" apparaîtra alors comme "http://subdomain.domain.net/subdomain.domain.net/url" afin qu'il puisse être récupéré dans la partie {site} de la commande MapRoute Ceci ne sera pas montré à l'utilisateur mais nous permettra de prendre des décisions à l'intérieur de l'application en fonction de la réception URL est-ce que cela semble sain? Commentaires sont les bienvenus si cela semble une manière folle de le faire afin d'absorber l'URL racine.

Questions connexes