请考虑以下侧栏:
如果我按下菜单项All solutions
下的子菜单项Solutions
,我会看到一个类似这样的网格:
此网格的网址为https://something.com/Solutions
。现在想象一下,我想进入菜单项Partners
和子菜单项Active
,网址为https://something.com/Partners/active
。
我使用简单的Html.ActionLink
就像这样:
Html.ActionLink("- Active", "Active", "Partners", null, new { @class = "filter-button" })
问题
使用https://something.com/Partners/active
按照我的方式将用户导航到网址Html.ActionLink
,这应该可行,但事实并非如此。该应用程序不是将我重定向到活动合作伙伴视图,而是将我重定向回https://something.com/Solutions
(我来自的确切位置),但使用此网址:https://something.com/Solutions?undefined=undefined
。
如果我再次按下菜单项Active
中的Partners
子菜单项,则网址会更改为https://something.com/Solutions?undefined=undefined&undefined=undefined
,这将永远持续下去。
我不知道为什么会这样,也没有任何解决方案。
PARTNERS / ACTIVE
public ActionResult Active()
{
using(var db = new DatabaseContext())
{
var partners = db.Partners.Where(x => x.Active).ToList();
return View(partners);
}
}
ROUTE DEFINITIONS
routes.MapRoute(
name: "ControllerIdActionId",
url: "{controller}/{id}/{action}/{id2}",
defaults: new { id2 = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Solutions",
url: "{controller}/{id}/{action}/",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
更新
在查看路径定义后,我注意到路径定义Solutions
从未使用过。我现在删除了该路由定义,因此路由定义如下所示:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "ControllerIdActionId",
url: "{controller}/{id}/{action}/{id2}",
defaults: new { id2 = UrlParameter.Optional }
);
但这没有任何区别。我尝试更改两条路线,以便在ControllerIdActionId
之前注册Default
路线,但这也没有效果。
答案 0 :(得分:0)
路线的顺序很重要。请更改路线的顺序。将Default
路线移至第1位并尝试。
此外,路线ControllerIdActionId
和Solutions
需要改进,它们看起来不合时宜。请尽量遵循一定的模式以避免并发症。
E.g。 Controller/Action/ID