链接将我发送到错误的页面

Nis*_*dru 0 asp.net-mvc asp.net-mvc-3

嗨,我正在尝试创建一个产品控制器的链接,但我似乎做错了.这是我的代码:

@Html.ActionLink(subcategory, "Products")
Run Code Online (Sandbox Code Playgroud)

当我点击此链接时,我希望发送到这样的内容:

http://localhost:2100/Products
Run Code Online (Sandbox Code Playgroud)

相反,我被发送到这个页面:

http://localhost:2100/Home/Products
Run Code Online (Sandbox Code Playgroud)

如果我打开产品页面cotontroller并单击链接我会发送给她:

http://localhost:2100/Products/Products
Run Code Online (Sandbox Code Playgroud)

那么我怎么能解决这个问题,因为链接在_Layout.cshtml视图中呢?

jav*_*iry 5

因为您正在设置路线的行动部分.用这个:

@Html.ActionLink(subcategory, "Index", "Products")
Run Code Online (Sandbox Code Playgroud)

编辑

查看您正在使用的方法的签名:

Html.ActionLink(string linkText, string actionName, string controllerName)
Run Code Online (Sandbox Code Playgroud)

你正在使用的超载是这个:

Html.ActionLink(string linkText, string actionName)
Run Code Online (Sandbox Code Playgroud)

这意味着在这个重载中,你不要设置路由器的控制器部分.因此,当我们不设置路线的一部分时,它将从当前路线自动读取,这意味着:当我们处于其控制器所在的路线时Home,您的链路的控制器将是Home,您将获得此路线:

@Html.ActionLink(subcategory, "Products", "Home")
Run Code Online (Sandbox Code Playgroud)

当你在一个带控制器的路线上时Products,你会得到这条路线:

@Html.ActionLink(subcategory, "Products", "Products")
Run Code Online (Sandbox Code Playgroud)

等等.