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

У меня есть один маршрут на моей 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() генерирует их.

Для представления Модель, которая является дочерней по отношению к домашней странице & hellip;

<%=Html.RouteLink(Model.Parent.Title, _
                  "IdOnly", _
                  New With {.id = Model.Parent.Id})%>

& hellip; генерирует следующий тег привязки:

<a href="/7">Home</a>

Как я могу переопределить href, сгенерированный функцией Html.RouteLink() для моей домашней страницы?

1 Ответ

4 голосов
/ 19 марта 2009

Добавьте новый маршрут перед вашим маршрутом «IdOnly» для домашней страницы:

routes.MapRoute( _
    "HomePage", _
    "", _
    New With {.controller = "Page", _
              .action = "Details", _
              .id = "7"} _
)

RouteLink будет использовать первое сопоставленное сопоставление в таблице маршрутизации для генерации ссылки.

...