コントローラのアクションhttp://localhost:xyz/HelloWorld
を指示するURLを取得しまし た。HelloWorld
Home
URLでレンダリングされるページには、同じページを指すHtml.ActionLinkがあります(はい、現在表示しているページへのリンクです)。
http://localhost:xyz/HelloWorld/
問題は、ページが(末尾にスラッシュを付けて)ロードされた場合にのみ、このリンクがページを指すことです。http://localhost:xyz/HelloWorld
ページが(スラッシュなしで)ロードされる場合、コントローラーのIndex
アクションに指示されます。Home
いくつかのオーバーロードを試しましたが、これを引き起こしている原因や修正方法がわかりません。
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/
ます。
誰かがこの動作またはそれを修正する方法を説明できますか?
編集(おそらく関連性がありますか?):が存在し、0でない
場合arg
、同じページがに表示されhttp://localhost:xyz/HelloWorld/arg
、「Hello World」リンク(完全に正常に機能します)と、問題なく機能する同様のリンクがあります。
Html.ActionLink("Argument", "HelloWorld", "Home", new {arg = arg}, null);
これは、末尾のスラッシュが存在するかどうかに関係なく、それ自体を正しく指し示します。
ルート:
routes.MapRoute(
"HomeStart",
"",
new { controller = "Home", action = "Index" }
);
routes.MapRoute(
"Hello World",
"HelloWorld/{arg}",
new {controller = "Home", action = "HelloWorld", arg = ""}
);