現在,這個問題。我有一個電子商務網站,我有一個名爲Store的控制器,帶有一個操作索引。當某人輸入www.mysite.com/sony時,我想要使用參數brand=Sony
轉到控制器存儲和操作索引。如果有人輸入www.mysite.com/sony-tv,我想轉到控制器存儲和操作索引,但參數brand=sony
和department=tv
。Asp.net MVC路由總是以參數
我通過爲存儲在數據庫中的每種情況創建路由並在應用啓動時動態構建路由來獲得該路由。在少數情況下,它的工作很好。 首先,我需要索引路線。我需要在索尼之前映射索尼電視,否則/索尼電視同樣映射到/索尼。
當我進入網站的家(www.mysite.com)並點擊Url.Action(「Index」,「Store」,new {brand = Sony})時,它會將我路由到www.mysite.com/sony 。 NICE!現在,在SONY品牌中,我會點擊Url.Action(「索引」,「商店」,新品牌=索尼,部門=電視),我可以看到索尼的所有電視。
一切都運行良好,直到這裏。在數據庫中,我有1條路徑到/ sony,我說我有一個名爲品牌的索尼價值參數和一個索尼品牌的限制品牌。我有另外一條路線對索尼電視說同樣的道路。模式sony-tv有一個名爲sony的品牌參數和一個名爲tv的deparment的參數,以及相同的參數約束。
在我的腦海裏,它意味着www.mysite.com/Sony的路線是Store/Index/brand = sony,而www.mysite.com/sony-tv是Store/Index/brand = sony &部門=電視。有了約束,我明白,如果部門不是電視或者參數部門不存在,它將發送到www.mysite.com/sony
當我在www.mysite.com/sony-tv時,如果我將鼠標移過其他品牌,鏈接構建到Url.Action(「Index」,「Store」,new {brand = Apple})是www.mysite.com/Apple-Tv 我有一條路線Apple-TV等於索尼。該網址存在,但我沒有通過電視參數。我通過這個鏈接(品牌鏈接)只有品牌。我想將用戶轉移到品牌的根,他已轉移到品牌+部門。
我不知道,它看起來像部門變量再次通過,我不知道如何取消。
我完全錯了嗎?我在做什麼是有效的?我能做到嗎?我的錯誤在哪裏?
在CSHTML文件:
@Html.ActionLink(febrand.Name.ToUpper(), "Index", new { controller = "Store", brand= febrand.FriendlyName, department = string.Empty })
在最終的HTML文件(從谷歌瀏覽器顯示源代碼):這似乎是很多工作的東西,你可以做
<a href="/sony?department=tv">SONY</a>
更新回答 – Tommy