Могу ли я сделать ASP.NET MVC Html.RouteLink() возвращает URL для моей домашней страницы без идентификатора?
-
20-08-2019 - |
Вопрос
У меня есть единственный маршрут в моем Global.asax.vb
страница, подобная этой...
Shared Sub RegisterRoutes(ByVal routes As RouteCollection) routes.IgnoreRoute("{resource}.axd/{*pathInfo}") routes.MapRoute( _ "IdOnly", _ "{id}", _ New With {.controller = "Page", _ .action = "Details", _ .id = "7"} _ ) End Sub
Это id
это для моей домашней страницы.Он отображается, когда кто-то переходит на мой: http://example.com/
Но это тоже работает: http://example.com/7
Я бы хотел, чтобы нигде на моем сайте не было ссылок на адрес с id
из 7.Но, в Html.RouteLink()
функция генерирует их.
Для модели представления, которая является дочерней по отношению к домашней странице…
<%=Html.RouteLink(Model.Parent.Title, _
"IdOnly", _
New With {.id = Model.Parent.Id})%>
...генерирует следующий тег привязки:
<a href="/7">Home</a>
Как я могу переопределить href
генерируемый Html.RouteLink()
функция для моей домашней страницы?
Решение
Добавьте новый маршрут перед вашим маршрутом "IdOnly" для домашней страницы:
routes.MapRoute( _
"HomePage", _
"", _
New With {.controller = "Page", _
.action = "Details", _
.id = "7"} _
)
RouteLink
будет использовать первое сопоставленное отображение в таблице маршрутизации для генерации ссылки.