2013-04-11 2 views
0

Я создал простой проект asp.net.Веб-страница ASP.NET Маршрутизация

Have папку учетной записи, и многие файлы, такие как Register.cshtml, LogIn и т.д ... И URL: LOCALHOST/Account/Регистрация

Хотите, чтобы это было: локальный/Регистрация, локальный/LogIn.

Пытались отобразить его в _AppStart.cshtml:

RouteTable.Routes.MapPageRoute("Account", "{Action}", "~/Account/{Action}"); 

И это не работает.

ответ

0

Прежде всего, вы должны использовать MapRoute для MapPageRoute, потому что MapPageRoute есть (от msdn):

Предоставляет способ • определять маршруты для Web Forms приложений

Но если вы измените свой код так:

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute("AccountRoute", "{Action}", new {controller = "Account"}); 

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

Каждый запрос без параметров отправляется в AccountRoute, даже если он должен обрабатываться другим контроллером.

Единственный способ это будет работать, чтобы создать подобный код:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

//ALL routes you need 
routes.MapRoute("LoginRoute", "{Action}", new { controller = "Account", action = "Login" }); 
routes.MapRoute("RegisterRoute", "{Action}", new { controller = "Account", action = "Register" });    

//Default route in the end 
routes.MapRoute(
        name: "Default", 
        url: "{controller}/{action}/{id}", 
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
       ); 
0

Попробуйте это один ....

//Default 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
      routes.MapRoute(
       "Default", 
       "", 
       new { controller = "Home", action = "Index", id = "" } 
      ); 

      //url rewriting 

      RouteTable.Routes.MapRoute(null, "Register/{ID}", new { controller = "Home", action = "Register" }); 
Смежные вопросы