0

こんにちは、製品コントローラーへのリンクを作成しようとしていますが、何か間違っているようです。コードは次のとおりです。

@Html.ActionLink(subcategory, "Products")

このリンクをクリックすると、次のような場所に送信されます。

http://localhost:2100/Products

代わりに、次のページに送信されます。

http://localhost:2100/Home/Products

cotontroller の製品ページを開いてリンクをクリックすると、次の URL に送信されます。

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

controller を使用してルートにいる場合、次のルート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")

ここで、subcategory : ここからのコンテンツが linkText の作成に使用されます。 "Index" : アクション名です。"Products" : コントローラ名です。

ルート構成コードも投稿する必要がありました。

于 2012-12-22T13:20:05.770 に答える