У меня есть URL http://localhost:xyz/HelloWorld
, который направляет на действие HelloWorld
в контроллере Home
.Html.ActionLink дает разные результаты в зависимости от URL-адреса
На странице, отображаемой по 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/
, если нет.
Может ли кто-нибудь объяснить это поведение или как его исправить?
EDIT (возможно, уместно?):
Когда 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 = ""}
);
Можем ли мы видеть, как у вас установлены маршруты? –
Ваш аргумент должен быть установлен как необязательный – diaho
@ M.Babcock Маршруты добавлены – yoozer8