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

时间:2012-12-22 12:11:32

标签: asp.net-mvc asp.net-mvc-3

您好我正在尝试创建一个指向Products控制器的链接,但我似乎做错了。这是我的代码:

@Html.ActionLink(subcategory, "Products")

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

http://localhost:2100/Products

相反,我被发送到此页面:

http://localhost:2100/Home/Products

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

http://localhost:2100/Products/Products

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

2 个答案:

答案 0 :(得分:5)

因为您正在设置路线的行动部分。使用此:

@Html.ActionLink(subcategory, "Index", "Products")

修改

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

Html.ActionLink(string linkText, string actionName, string controllerName)

您正在使用的重载是:

Html.ActionLink(string linkText, string actionName)

这意味着在此重载中,您不要设置路由的控制器部分。因此,当我们不设置路线的一部分时,它将从当前路线自动读取,这意味着:当我们在路线中它的控制器为Home时,您的链路的控制器将为Home你会得到这条路线:

@Html.ActionLink(subcategory, "Products", "Home")

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

@Html.ActionLink(subcategory, "Products", "Products")

等等。

答案 1 :(得分:0)

Html.ActionLink具有以下语法:

public static MvcHtmlString ActionLink(
this HtmlHelper htmlHelper,
string linkText,
string actionName,
string controllerName
)

正如Javad_Amiry正确回答的那样,您可以使用以下代码创建链接:

@Html.ActionLink(subcategory, "Index", "Products")

其中, 子类别:来自此的内容将用于创建linkText “索引”:是动作名称。 “产品”:是控制器名称。

帮助你更容易,不得不发布路由配置代码。