Я добавил маршрутизацию в свое решение, чтобы иметь более удобный для пользователя URL в адресной строке.
Я запускаю решение, и когда я переключаю свою ссылку Избранное, я вижу URL ... / Affaire / Favorite (рисунок ниже). Это нормально для меня.
Когда я переворачиваю ссылку на мою корзину, я вижу URL .. / Affaire / Deleted (рисунок ниже). Это нормально для меня.
Затем я нажимаю ссылку «Корзина», перехожу на соответствующую страницу, и URL, показанный в адресной строке, подходит для меня (рисунок ниже).
Затем я снова переворачиваю ссылку «Избранное» (рисунок ниже), я вижу URL .. / Affaire / Delete? OnlyFavorite = true !! Это не хорошо.
Маршрутизация теперь получает атрибут не по моей ссылке, а с активного URL! Этот атрибут называется OnlyFavorite, и я не хочу этот атрибут. Это «отражение». Обратите внимание, что все мои маршруты используют один и тот же контроллер и одно и то же действие, но используют разные атрибуты для маршрутов.
Ниже приведены ссылки, которые я использовал.
Пример перехода на любимую страницу:
@Html.ActionLink("Favorites", "SearchAffaires", new { OnlyFavorite = true })
Пример перехода на страницу корзины:
@Html.ActionLink("Recycle bin", "SearchAffaires", new { StatusCode = "DELETED" })
Вот мои маршруты:
routes.MapRoute(
"Affaire Status Open/Closed/Deleted", // Route name
"{controller}/{StatusCode}", // URL with parameters
new { action = "SearchAffaires" }, // Parameter defaults
new { controller = "Affaire", StatusCode = "^Open$|^Closed$|^Deleted$" }// Contraints
);
routes.MapRoute(
"Affaire Only Favorite", // Route name
"{controller}/Favorite", // URL with parameters
new { action = "SearchAffaires", Page = 1, OnlyFavorite = true }, // Parameter defaults
new { controller = "Affaire" } // Contraints
);
Есть ли у вас какие-либо идеи, как я могу избежать такого поведения?
Я не хочу, чтобы маршрутизация получала атрибут с именем OnlyFavorite из моего текущего URL по рефлексии. Я уже пытаюсь передать OnlyFavorite = null в ссылке действия, но она не работает: маршрутизация говорит "хорошо, у меня нет значения OnlyFavorite в самой ссылке, но у меня есть OnlyFavorite в URL, поэтому я используйте это! ".