[英]Route order in ASP.Net MVC4
我正在嘗試添加一條沒有成功的路線。 我有默認的潰敗。 它的服務器網址類似-http : //server.com/Controller/Action(URL1),但我還需要添加此URL: http ://server.com/BlueTheme/Controller/Action(URL2)我正在檢查參數在請求上並為用戶添加特殊主題。 我知道路由配置順序的工作方式低於我配置的順序,但是使用URL1時,似乎第一個路由有效。 這很奇怪,請幫忙。
更新 Url.Action(“ Action”,“ Controller”)生成“ BlueTheme / Controller / Action”(當我使用URL1時),這使我說“它似乎在第一條路線上起作用”。 有人知道它為什么會發生,我該怎么辦?
routes.MapRoute(
name: "Other Theme",
url: "BlueTheme/{controller}/{action}",
defaults: new { controller = "Home", action = "Index", HttpRoute = true }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index", HttpRoute = true }
);
您的路線順序看起來不錯,但我想您想要
routes.MapRoute(
name: "Other Theme",
url: "BlueTheme/{controller}/{action}",
defaults: new { controller = "Home", action = "Index", theme = "BlueTheme", HttpRoute = true }
);
請注意,我已經添加了theme
路由值,然后您的應用程序的其余部分可以訪問該值:
public ActionResult Index(string theme){ ... }
與其將“ BlueTheme”嵌入URL本身,還不如使用約束條件:
routes.MapRoute(
name: "Other Theme",
url: "{theme}/{controller}/{action}",
defaults: new { controller = "Home", action = "Index", theme = "BlueTheme", HttpRoute = true },
constraints: new { theme = "BlueTheme|BlackTheme|WhiteTheme" }
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.