2010-06-30 3 views
0

Comment faire pour que mon application route vers mydomainname/username/controller.Réutiliser le paramètre route sur l'URL

Je travaille sur l'application web asp.net mvc qui permet à un utilisateur d'appartenir à plusieurs comptes. c'est à dire. Dans l'application, chaque compte a ses propres utilisateurs et chaque utilisateur d'un compte peut également être un utilisateur d'un autre compte. Ce dont j'ai besoin est quand un utilisateur veut se connecter, ils spécifient le compte auquel ils veulent être connecté comme ceci: domainname.com/accountname/login.

Suis capable de faire ceci, mais où ai-je un problème est de savoir comment persister le paramètre routename de compte sur d'autres routes? Je veux dire le rendre visible sur l'url. Pour l'instant j'utilise cookie pour stocker et obtenir le paramètre accountname, mais j'ai besoin d'un moyen de le rendre visible sur l'URL dans chaque requête (sans avoir à l'acheminer manuellement sur les liens) jusqu'à ce que l'utilisateur chante.

Am asp.net mvc utilisez 2

Modifier: Ajouté mon code d'itinéraire

 public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute("", "", new { controller = "Home", action = "index" }); 

     routes.MapRoute("", "dashboard", new { controller = "account", action = "dashboard" }); 

     routes.MapRoute("", "contacts", new { controller = "contact", action = "index" }); 

     routes.MapRoute("", "groups", new { controller = "group", action = "index" }); 

     routes.MapRoute("", "sms", new { controller = "sms", action = "index" }); 

     routes.MapRoute("", "users", new { controller = "user", action = "index" }); 

     routes.MapRoute("", "login", new { controller = "Home", action = "login", accountUrlName = UrlParameter.Optional }); 

     routes.MapRoute("", "{accountUrlName}/login", new { controller = "Home", action = "login" }); 

     routes.MapRoute("", "register", new { controller = "home", action = "register" }); 

     routes.MapRoute("", "{accountUrlName}/invitations/{ivkey}", new { controller = "home", action = "invitations" }); 

     routes.MapRoute("", "{urlName}", 
      new { controller = "home", action = "index", urlName = UrlParameter.Optional }); 

     routes.MapRoute("", "{accountUrlName}/{action}", 
      new { controller = "account", action = "dashboard", id = "", accountUrlName = UrlParameter.Optional }); 

     routes.MapRoute("", "{accountUrlName}/{controller}/{action}/{id}", 
      new { controller = "account", action = "dashboard", id = "", accountUrlName = ""}); 

     routes.MapRoute(
      "Default",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
     ); 

    } 
+0

Pourriez-vous ajouter un peu plus d'informations? Êtes-vous seulement intéressé par l'action de connexion pour les noms de compte, et toute autre action pour les noms d'utilisateur ou voulez-vous que le nom de compte apparaisse également dans les noms d'utilisateur? Peut-être que l'ajout de quelques exemples de routes clarifierait. –

+0

Je veux que le nom du compte s'affiche dans l'URL. dans ma route j'ai quelque chose comme ceci {accountUrlName}/login ", nouveau {controller =" Home ", action =" login "}. Cela semble fonctionner correctement pour la page de connexion, mais aucun autre de mon contrôleur. speficied quelque chose comme ceci: {accountUrlName}/{action} ", nouveau {controller =" compte ", action =" tableau de bord ", id =" ", accountUrlName = UrlParameter.Optional} {accountUrlName}/{controller}/{action }/{id} ", nouveau {controller =" compte ", action =" tableau de bord ", id =" ", accountUrlName =" "}. Cela ne fonctionne que pour ma page d'accueil – Syma

Répondre

0

Vous avez en fait deux ensembles de routes ici -

{AccountName}/{Controller}/{Action} et {Username}/{Controller}/{Action}.

Est-ce exact?

Il est possible que vous créiez ces routes, mais vous devez avoir des noms d'utilisateur qui ne contiennent pas de noms de compte, et vice versa.

+0

Ajout de mon code de route. – Syma

Questions connexes