我創建了簡單的asp.net項目。ASP.NET WebPages路由
有無文件夾帳戶,和許多文件,如Register.cshtml,登錄等.. 和URL:本地主機/客戶/註冊
希望它是:本地主機/註冊,本地主機/登錄。
試圖將其在_AppStart.cshtml映射:
RouteTable.Routes.MapPageRoute("Account", "{Action}", "~/Account/{Action}");
而且這是行不通的。
我創建了簡單的asp.net項目。ASP.NET WebPages路由
有無文件夾帳戶,和許多文件,如Register.cshtml,登錄等.. 和URL:本地主機/客戶/註冊
希望它是:本地主機/註冊,本地主機/登錄。
試圖將其在_AppStart.cshtml映射:
RouteTable.Routes.MapPageRoute("Account", "{Action}", "~/Account/{Action}");
而且這是行不通的。
所有你必須使用圖路線來的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 }
);
試試這個....
//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" });