У меня есть URL http://localhost:xyz/HelloWorld
, который указывает на действие 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/
, если их нет.
Кто-нибудь может объяснить это поведение или как его исправить?
РЕДАКТИРОВАТЬ (возможно, актуально?):Когда присутствует arg
, а не 0, та же страница отображается на 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 = ""}
);