Повторно использовать параметр маршрута в URL - PullRequest
0 голосов
/ 30 июня 2010

Как мне сделать мой маршрут приложения к mydomainname / username / controller.

Я работаю над веб-приложением asp.net mvc, которое позволяет пользователю принадлежать к нескольким учетным записям.то есть.В приложении каждая учетная запись имеет своих собственных пользователей, и каждый пользователь в одной учетной записи также может быть пользователем в другой учетной записи.Что мне нужно, так это когда пользователь хочет войти в систему, он указывает учетную запись, в которую он хочет войти, например: domainname.com/accountname/login.

Я могу сделать это, но где у меня проблема, как сохранить параметр маршрута имени учетной записи на других маршрутах?Я имею в виду сделать так, чтобы это было видно по URL.На данный момент я использую cookie для хранения и получения параметра accountname, но мне нужен способ сделать его видимым в URL-адресе при каждом запросе (без необходимости вручную направлять его по ссылкам) до тех пор, пока пользователь не запишется.

Использую asp.net mvc 2

Редактировать : Добавлен мой код маршрута

        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
        );

    }

1 Ответ

0 голосов
/ 01 июля 2010

Таким образом, у вас фактически есть два набора маршрутов -

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

Это правильно?

Возможно, вы можете создать этимаршруты, но у вас должны быть имена пользователей, которые не содержат учетных записей, и наоборот.

...