ASP.NET MVC @ Url.Action включает данные текущего маршрута - PullRequest
1 голос
/ 05 августа 2011

Предположим, я:

  • У меня есть маршрут {controller}/{action}/{id} в моем файле Global.asax.
  • Контроллер Foo и Действие Bar(String id), возвращающие представление.
  • Очень простое представление, содержащее URL, отображаемый @Url.Action("bar", "foo") - явно НЕ определяющий id.
  • Если я перейду к /foo/bar/test, в представлении отобразится отображенный URL-адрес как /foo/bar/test. Я ожидал бы, что это должно быть /foo/bar, так как я не указал значение для id.

Почему он включает текущий идентификатор, даже если я его не указал, и есть ли способ предотвратить это (кроме «жесткого кодирования» URL-адреса напрямую)?

Ответы [ 2 ]

1 голос
/ 05 августа 2011

Вы указали значение для идентификатора, когда указали /foo/bar/test в адресной строке браузера. По сути, вы вызываете метод Bar с параметром "test" в вашем контроллере foo. Ваш простой вид не имеет значения, когда вы просматриваете напрямую.

Чтобы ответить на ваш последний вопрос, вам, возможно, потребуется пересмотреть способ использования MVC.

0 голосов
/ 20 июня 2012

Я считаю, что это ошибка регрессии в MVC3, как обсуждал Фил Хаак: http://haacked.com/archive/2011/02/20/routing-regression-with-two-consecutive-optional-url-parameters.aspx

Это правильный ответ: https://stackoverflow.com/a/7133304/27938

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