2014-02-02 4 views
0

Я планирую написать настраиваемую маршрутизацию ASP.NET MVC4 для проблемы, описанной ниже.Пользовательская маршрутизация ASP.NET MVC4

По умолчанию [HTTP: // локальный: 1603] URL должен показать страницу входа после того, как вошли в систему, то URL должен содержать имя имя пользователя в URL, как пользователь [HTTP: // локальный: 1603/имя пользователя] и другие методы действий должны получить доступ, например, [http: // localhost: 1603/имя пользователя/профиль].

Просьба указать, как это сделать.

Заранее спасибо.

ответ

0

По умолчанию [HTTP: // локальный: 1603] URL должен показать Войти страница

Для этого вы можете изменить по умолчанию Default Url маршрута values.Like это:

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional } 
     ); 

Вы должны изменить значение по умолчанию Controller и по умолчанию Action. Например, я меняю их как: Account и Login.

URL должен содержать имя имя пользователя в URL, как [Http: // Localhost: 1603/имя пользователя]

Теперь вам нужен собственный маршрут, может быть что-то вроде:

routes.MapRoute(
      name: "Custom", 
      url: "{username}/{action}", 
      defaults: new { controller = "UserController", action = "Index" } 
     ); 

С этим маршрутом (я предполагаю, что у вас есть (UserController и действие Index):

http://localhost:1603/username 

Пойдет на действие индекса UserController.

http://localhost:1603/username/profile 

будет искать Profile действий внутри UserController .Ofcourse вы должны получить имя пользователя из RouteData словаря внутри вашего Action.Otherwise, что кажется бессмысленным.

0

Я поклонник MvcCodeRouting (для него есть пакет NuGet). Взгляните на doco для базовых маршрутов. Он будет делать то, что вы пытаетесь достичь.

Смежные вопросы