ActionLink / RouteLink на основе URL, а не контроллера - PullRequest
0 голосов
/ 05 ноября 2010

У меня есть контроллер, который использует следующую структуру:

.com/Object/375

Тем не менее, я также могу использовать следующий URL, когда я получаю специальные права администратора

.com/Admin/Object/375

Я использую одни и те же пользовательские элементы управления, независимо от того, находитесь ли вы в разделе администратора или нет, но они оба указывают на один и тот же контроллер Объект . Мне нужно, чтобы ссылки поддерживали эту структуру URL, а не пытались пнуть пользователя Admin обратно в контроллер объекта. В настоящее время я использую метод имени маршрута, где это мои имена маршрутов (в global.asax):

"Admin/-Object"
"Object/-Object"
"Object-Object"

Эти названия маршрутов охватывают следующие маршруты:

Admin/Object, Admin/Object/555, Object, Object/323

Затем я использую следующее в ссылке на маршрут

Html.RouteLink(id, Request.Url.Segments[1] + "-Object", new { id = id })

Это прекрасно работает, но имеет странный запах - есть еще идеи?

Чтобы уточнить: мне нужно, чтобы URL был правильно создан на основе текущей структуры URL (с администратором или без него), и маршрутизация будет указывать на правильный контроллер (одинаковый для обоих URL), а конкретный контент администратора будет вставляется на страницу только в разделе администратора (на основе URL).

1 Ответ

0 голосов
/ 25 мая 2011

Просто, чтобы обернуть это, использование ViewBag, вероятно, является лучшей идеей, потому что использование сегмента URL может привести к неожиданным ошибкам, особенно если вы переместите элементы управления или представления вокруг.

...