我構建了一個web應用程序,其中RouteConfig.cs
是默認的應用程序。有沒有辦法在ActionLink中考慮MapRoute中的URL參數?
現在我收到了一個任務,我需要在URL的開頭追加一個客戶跟蹤ID,但保持其不存在的同樣功能。
http://localhost:60202/Home/Index //類客戶 http://localhost:60202/Location/123/Home/Index // URL與客戶跟蹤ID
此代碼123
是我的客戶知道他發起呼叫到我的頁面位置的跟蹤ID。自從他們在全球各地使用以來,我無權要求他們改變這一點。
我試着用這個自定義路徑來實現:
routes.MapRoute(
name: "Route",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "Location/{trackingId}/{controller}/{action}",
defaults: new { trackingId = 0, controller = "Home", action = "Index" }
);
在這種情況下,我可以用我上面提供兩個URL模式訪問我的應用程序,但我不能設法讓ActionLink
和BeginForm
藉此進入帳戶。
@Html.ActionLink("Início", "Index", "Home") //this should have full URL info
有沒有辦法實現這一目標,而不需要在任何情況下,以改變每ActionLink
,Url.Content
和BeginForm
和環繞他們if
?
如何在不更改每個導航代碼的情況下使用兩個URL架構?
我們目前實施的方法是複製IIS中的文件夾,因爲目前只有4個文件夾,但在不久的將來,維護起來可能很痛苦。
我不知道爲什麼,但根據this問題它應該開箱即用。
編輯1
貌似改變這兩個MapRoute
位置使得ActionLink
工作如我所料。不幸的是Url.Content
仍然是越野車。