您好我正在尝试创建一个指向Products控制器的链接,但我似乎做错了。这是我的代码:
@Html.ActionLink(subcategory, "Products")
当我点击此链接时,我希望发送到这样的内容:
http://localhost:2100/Products
相反,我被发送到此页面:
http://localhost:2100/Home/Products
如果我打开产品页面cotontroller并点击链接,我会发送给她:
http://localhost:2100/Products/Products
那么我怎么能解决这个问题,因为链接在_Layout.cshtml视图中?
答案 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 “索引”:是动作名称。 “产品”:是控制器名称。
帮助你更容易,不得不发布路由配置代码。