MVC Url.Action ведет себя по-разному на разных страницах
Я видел интересное поведение asp .net "Url.Action".
Ссылка как <a href="@Url.Action("Index", "Soru")" >@baslik</a>
кажется в клиентском браузере как <a href="/Soru/Index">denemebaslik</a>
Затем пользователь нажимает эту ссылку и переходит на целевую страницу.
На этой целевой странице есть ссылка <a href="@Url.Action("Index", "Soru")" >@baslik</a>
кажется в клиентском браузере как <a href="/Soru/Index/29271654-e19a-4096-8795-3283d8a208ed">denemebaslik</a>
@Url.Action
ведет себя по-разному на разных страницах. Мой конфиг маршрута похож
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{*id}",
defaults: new { controller = "Giris", action = "Index", id = UrlParameter.Optional }
);
Почему это так красиво?
1 ответ
MVC подберет параметры в строке запроса текущей страницы и включит их при отображении ссылки на тот же маршрут, в основном сохраняя существующие параметры.
Если это сценарий, который вы испытываете - это по замыслу. Это означает, что для ситуаций, когда ссылка действия указывает на саму страницу, параметры уже доступны для вас. Например, если у вас есть ссылки "сортировать по возрастанию / убыванию", другие параметры (например, цена / описание) будут по-прежнему включаться в ссылки без необходимости каждый раз кодировать их.
Если вам не нужны дополнительные параметры, укажите параметр с пустой строкой, например
<a href="@Url.Action("Index", "Soru", new { id = "" })">@baslik</a>
Обратите внимание, что вы не можете назначить null
к параметру, потому что это анонимный тип. Пустые строки работают просто отлично.
Кстати, я уверен, что вы это знаете, но вы также можете использовать более удобный @Html.ActionLink
тоже:
@Html.ActionLink(baslik, "Index", "Soru", new { id = "" })">
Надеюсь, это поможет вам.