ASP.NET MVC AnchorLink не использует значения маршрута? - PullRequest
0 голосов
/ 29 октября 2011

Я использую AnchorLink на очень простом сайте, для которого определены только два маршрута: один стандартный и другой маршрут для admin/{controller}/{action}/{id}.Я нахожусь по URL-адресу вроде:

/admin/release/push/255

В этом представлении я использую:

@Html.AnchorLink("Confirm", "Confirm")

AnchorLink отображает ссылку без текущего запроса {id}, т.е./admin/release/confirm!Если я проверю значения RouteValues, я вижу, что {id} там.Если я просто передам значения маршрута из текущего запроса, например:

@Html.AnchorLink("Confirm this release", "Confirm", Url.RequestContext.RouteData.Values)

Тогда все заработает, я получу URL /admin/release/confirm/255.Почему работает явная версия, в которой я передаю текущие значения маршрута запроса, а неявная, без аргумента значений маршрута, который, как я думал, будет принимать текущие значения маршрута запроса, не работает?Я знаю, что вышеупомянутое является решением, но оно ужасно и есть какая-то причина, почему AnchorLink без значений маршрута не работает, как я ожидаю ?!

1 Ответ

0 голосов
/ 29 октября 2011

MVC здесь делает все правильно. Это не значит, что вам нужен параметр Id для вашей якорной ссылки или нет - другими словами, он не пытается ничего умного для предварительного анализа и проверки ссылки. Он будет делать это только тогда, когда его визуализируют. И в вашем случае без указания параметра id где-то будет использоваться маршрут по умолчанию.

Если вы обнаружите, что пишете один и тот же код повсюду, вы можете легко извлечь его в статический вспомогательный класс. Это может избавить от безобразия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...