簡體   English   中英

ASP.Net MVC4中的路由順序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM