http://localhost:xyz/HelloWorld
というURLがありますが、これはHome
コントローラのHelloWorld
アクションに向けられています。URLに応じてHtml.ActionLinkの結果が異なります
URLをレンダリングするページには、同じページ(現在のページへのリンク)を指すHtml.ActionLinkがあります。
問題は、ページがhttp://localhost:xyz/HelloWorld/
(末尾にスラッシュ)としてロードされている場合にのみ、このリンクがページを指していることです。ページがhttp://localhost:xyz/HelloWorld
(スラッシュなし)としてロードされている場合は、Home
コントローラのIndex
アクションを指示します。
私はいくつかのオーバーロードを試しましたが、何が原因で発生しているのか、それを修正する方法がわかりません。
Html.ActionLink("Hello World", "HelloWorld", "Home");
Html.ActionLink("Hello World", "HelloWorld", "Home", null, null);
Html.ActionLink("Hello World", "HelloWorld", "Home", new { arg = 0 }, null);
これらはすべて全く同じ結果を示します。末尾にスラッシュがある場合は正常に動作し、存在しない場合はhttp://localhost:xyz/
に直接進みます。
誰でもこの動作や解決方法を説明できますか?
EDIT(おそらく関連?):
arg
が0存在しない場合は、同じページがhttp://localhost:xyz/HelloWorld/arg
で示され、(完全に正常に動作します)、「Hello World」のリンクを持っている、と同様のリンクそれは完璧に動作します。
Html.ActionLink("Argument", "HelloWorld", "Home", new {arg = arg}, null);
これは、末尾にスラッシュがあるかどうかにかかわらず、正しく機能します。
ROUTES:
routes.MapRoute(
"HomeStart",
"",
new { controller = "Home", action = "Index" }
);
routes.MapRoute(
"Hello World",
"HelloWorld/{arg}",
new {controller = "Home", action = "HelloWorld", arg = ""}
);
経路の設定方法を確認できますか? –
引数をオプションで設定する必要があります – diaho
@ M.Babcockルートが追加されました – yoozer8