2016-10-10 1 views
2

ici est mon problème, j'ai un site Web existantitinéraires mvc de multiples pour le même site

wwww.mysite.com 
exigence

me demander de permettre aux utilisateurs d'utiliser le même site comme celui-ci

www.mysite.com 
www.mysite.com/Home/Index 
www.mysite.com/defaultsuborganisation/Home/Index 
www.mysite.com/suborganisation1/Home/Index 
www.mysite.com/suborganisation2/Home/Index 

si je modifie la configuration des routes (RouteConfig.cs)

routes.MapRoute(
    name: "OrganisationRoute", 
    url: "{org}/{controller}/{action}/{data}", 
    defaults: 
    new 
    { 
    org= "defaultsuborganisation", 
    controller = "Home", 
    action = "Index", 
    data = UrlParameter.Optional 
    }); 

Je travaille pour toutes les routes prévues à l'exception des www.mysite.com/Home/Index

+1

Vous pouvez utiliser le routage attribut pour cela! –

+0

Pourquoi n'utiliseriez-vous pas plusieurs enregistrements de route? Je trouve qu'il est plus facile de lire lorsque des enregistrements distincts sont présents pour chaque groupe de routes unique ... –

Répondre

2

Attributs de routage comme Div dit peut-être la meilleure façon d'aller, mais vous pouvez ajouter un itinéraire à l'avance de votre OrganisationRoute dans les RegisterRoutes() méthode comme si fixe:

routes.MapRoute(
"DefaultHomeRoute", 
"Home/Index/{id}", 
new { controller = "Home", action = "Index", id = UrlParameter.Optional} 
); 
+0

Oui, c'est aussi une solution simple. –

0

Vous pouvez attribut utiliser le routage pour cela:

Activation attributs de routage:
pour activer le routage d'attribut, nous avons besoin d'appeler le M Méthode apMvcAttributeRoutes de la classe de collection de routes pendant la configuration dans RouteConfig.

routes.MapMvcAttributeRoutes(); 

Et votre action:

[Route("Home/Index")] 
public ActionResult Index() 
{ 
    return view(); 
}