2013-04-11 83 views
0

我創建了簡單的asp.net項目。ASP.NET WebPages路由

有無文件夾帳戶,和許多文件,如Register.cshtml,登錄等.. 和URL:本地主機/客戶/註冊

希望它是:本地主機/註冊,本地主機/登錄。

試圖將其在_AppStart.cshtml映射:

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

而且這是行不通的。

回答

0

所有你必須使用圖路線來的MapPageRoute首先,因爲是的MapPageRoute(從msdn):

提供一種方法o爲路線Web窗體應用程序

但是,如果您修改代碼:

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