Могу ли я сделать ASP.NET MVC Html.RouteLink() возвращает URL для моей домашней страницы без идентификатора?

StackOverflow https://stackoverflow.com/questions/660373

Вопрос

У меня есть единственный маршрут в моем 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 будет использовать первое сопоставленное отображение в таблице маршрутизации для генерации ссылки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top