我在我的视图中定义了两个操作链接,如下所示:
@Html.ActionLink("Baxter", "SearchAffaires", new { LabelName = "Baxter" })
@Html.ActionLink("Favorite", "SearchAffaires", new { OnlyFavorite = true })
我定义了以下两条路线:
routes.MapRoute(
"Search Affaire Only Label", // Route name
"{controller}/Label/{LabelName}", // URL with parameters
new { controller = "Affaire", action = "SearchAffaires" } // Parameter defaults
);
routes.MapRoute(
"Search Affaire Only Favorite", // Route name
"{controller}/Favorite", // URL with parameters
new { controller = "Affaire", action = "SearchAffaires", OnlyFavorite = true } // Parameter defaults
);
如果我开始使用我的解决方案并指向我最喜欢的链接,我会收到以下网址:
http://localhost:3817/Affaire/Favorite
这对我没问题。现在,我重新开始我的解决方案(重要),我指向一个'标签'链接(对于这个例子,我的标签是Baxter),我得到以下网址:
http://localhost:3817/Affaire/Label/Baxter
这对我没问题。现在我没有重新启动我的解决方案,我指向我的“最喜欢的”链接,我得到以下网址:
http://localhost:3817/Affaire/Label/Baxter?OnlyFavorite=True
如您所见,名为OnlyFavorite的参数再次传递,但我没想到!
我该怎么做才能避免这种行为?
感谢。
答案 0 :(得分:1)
问题是在您添加链接时MVC无法知道您要使用哪条路由,因为它具有当前请求中的所有参数LabelName
已设置,因此它匹配Search Affaire Only Label
路线。
这是一个修复。同样你也可以添加LabelName
不能为空的约束,因此它匹配第二条路径:
routes.MapRoute(
"Search Affaire Only Label",
"{controller}/Label/{LabelName}",
new { controller = "Affaire", action = "SearchAffaires" }
);
routes.MapRoute(
"Search Affaire Only Favorite",
"{controller}/Favorite",
new
{
controller = "Affaire",
action = "SearchAffaires",
LabelName = string.Empty,
OnlyFavorite = true
}
);
@Html.ActionLink("Baxter", "SearchAffaires",
new { LabelName = "Baxter" })
@Html.ActionLink("Favorite", "SearchAffaires",
new { LabelName = string.Empty, OnlyFavorite = true })