Если я перейти к следующему StackOverflow URL http://stackoverflow.com/questions/15532493
он автоматически добавляется в названии вопроса, как так:Stackoverflow стиль URL (настройка исходящего URL)
http://stackoverflow.com/questions/15532493/mvc-custom-route-gives-404
То есть, я могу напечатать в URL в мой браузер без название вопроса и оно добавляется автоматически.
Как я могу добиться того же результата в своем приложении? (Примечание: я знаю, что заголовок вопроса не влияет на отображаемую страницу).
У меня есть контроллер под названием Users
с методом действия, который называется Details
. У меня есть следующий маршрут:
routes.MapRoute("UserRoute",
"Users/{*domain}",
new { controller = "User", action = "Details" },
new { action = "^Details$" });
Поскольку это приложение интрасети, пользователь аутентифицирован против своей учетной записи Windows. Я хочу добавить домен и имя пользователя в URL.
Если я генерировать URL в представлении следующим образом:
@Html.ActionLink("Model.UserName", "Details", "User", new { domain = Model.Identity.Replace("\\", "/") })
Я получаю URL, который выглядит примерно так:
домена/Пользователи/ACME/JSmith
Однако, если пользователь переходит к URL-адресу Domain/Users/
с помощью навигационной панели браузеров, он соответствует маршруту, и пользователь переходит на страницу сведений о пользователе. Я хотел бы добавить ACME/jsmith/
на URL в этом случае.
Исследование я сделал до сих пор указывает на то, я мог бы реализовать пользовательский объект маршрута, выводя из RouteBase
и реализации GetRouteData
и GetVirtualPath
методы, но я не знаю, с чего начать это (documentaiton MSDN очень тонкая) ,
Так что я хотел бы знать:
- Есть ли способ достижения этой цели без реализации пользовательского маршрута?
- Если нет, знает ли кто-нибудь о каких-либо хороших ресурсах, чтобы заставить меня начать реализацию пользовательского маршрута?
- Если требуется выполнение пользовательского маршрута, как он получает информацию, которая предположительно должна быть загружена из базы данных? Хорошо ли, чтобы служба вызывала вызовы базы данных в маршруте (что кажется мне неправильным) или может ли информация передаваться на трассу с помощью структуры MVC?
http://stackoverflow.com/questions/25259/how-does-stackoverflow-generate-its-seo-friendly-urls –
@ Soner Gönül - связанный вопрос показывает «как-генерировать строки-подобные-это», что я не прошу. Я хочу добавить значения в url, если пользователь вводит только бит «Domain/Users /» в панели навигации браузеров. –
Это не дубликат, так как он не спрашивает, КАК генерировать строку заголовка, но вместо этого как всегда перенаправлять страницу, где заголовок находится в URL-адресе, даже если пользователь добрался туда, просто введя идентификатор – tucaz