0

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

@Html.ActionLink(subcategory, "Products")

当我点击这个链接时,我想被发送到这样的地方:

http://localhost:2100/Products

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

http://localhost:2100/Home/Products

如果我打开产品页面 cotontroller 并单击我收到的链接E:

http://localhost:2100/Products/Products

那么,考虑到链接位于 _Layout.cshtml 视图中这一事实,我该如何解决这个问题呢?

4

2 回答 2

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")

等等。

于 2012-12-22T12:14:07.443 回答
0

Html.ActionLink具有以下语法:

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

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

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

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

帮助您会更容易,也必须发布路线配置代码。

于 2012-12-22T13:20:05.770 回答