现在,这个问题。我有一个电子商务网站,我有一个名为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