2010-12-05 19 views
1

Nous avons plusieurs domaines différents hébergés sur un serveur interne. Ils représentent tous les différentes marques appartenant à notre société et nous aimerions l'intégration entre chaque domaine, partage des modèles, des vues, des ressources, etc.MVC 2 Routing - {Contrôleur} .com/{action}/{id} - Est-ce possible?

Ce que je voudrais faire est d'avoir {Controller} comme le domaine actuel, donc il semblerait comme http: // {Contrôleur} .com/{Action}/{Id}.

Est-ce possible? J'ai vu des gens le faire avec des sous-domaines. ET, vaut-il la peine ou existe-t-il un moyen plus facile d'accomplir le même.

Si oui, est-ce que quelqu'un a des suggestions sur comment je peux le tester sur Localhost?

Répondre

2

Oui, il est possible et pas si différent du routage basé sur des sous-domaines. Si vous regardez this example, il regarde l'en-tête Host, se sépare sur le '.' puis prend le premier élément dans le tableau. Vous prendrez simplement l'avant-dernier élément de ce tableau (puisque "com" est le dernier élément). Au fond, dans votre GetRouteData override, vous faites quelque chose comme ceci:

// Retrieve the url - and split by dots: 
var url = httpContext.Request.Headers["HOST"]; 
var urlParts = url.Split("."); 

var routeData = new RouteData(this, new MvcRouteHandler()); 
routeData.Values.Add("controller", urlParts[urlParts.Count - 2]); 

(-vérification erreur et validation non inclus ici, évidemment)

En ce qui concerne les tests sur localhost, vous pouvez simplement ajouter les noms de domaine que vous vouloir tester sur votre fichier hosts, en pointant sur 127.0.0.1.