[英]Map Custom Route ASP.NET MVC5
我以前沒有使用過 .NET 路由。 我有一個 URL: http://myurl.com/Account/Login/?IsIPA=true
。 我希望能夠使用以下內容訪問此 URL: http://myurl.com/IPA
: http://myurl.com/IPA
這是我想要命中的唯一自定義路線。
我可以為這樣的單個 URL 創建路由嗎?
我不起作用的代碼是:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute("IPA", "Account/Login/{IsIPA}", new { controller = "Account", action = "Login", IsIPA = "true" });
}
我收到錯誤:
具有路由模板
Account/Login/{IsIPA}=True
的路由上的約束條目IsIPA
必須具有字符串值或實現System.Web.Routing.IRouteConstraint
的類型。
路由匹配類似於 switch case 語句。 url
參數和任何默認值和約束都被考慮來確定它是否與傳入的 URL 匹配。 如果路由匹配,它將根據配置創建一個路由值字典。 如果路由不匹配,則嘗試集合中的下一個路由,直到找到(或不匹配)。
這意味着指定路由的順序很重要。 默認路由匹配具有 0、1、2 或 3 個段的任何URL。 因此,在大多數情況下,您需要在默認路由之前定義自定義路由。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "IPA",
url: "IPA",
defaults: new { controller = "Account", action = "Login", IsIPA = "true" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
上面的配置將http://myurl.com/IPA
路由到名為Account
的 Controller 和名為Login
Action 方法,並傳遞額外的路由鍵IsIPA
。 將為 Controller/Action/IsIPA 組合構建相同的 URL,因為它是列表中第一個匹配的 URL。
請注意,原始 URL http://myurl.com/Account/Login/?IsIPA=true
仍然有效並且仍然路由到相同的位置。 此配置只是為該資源添加了一個額外的路由。
沒有測試它,我認為你想要這個:
routes.MapRoute("IPA", "Account/Login/{IsIPA}",
new { controller = "Account", action = "Login", IsIPA = "true"});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.