Pergunta

Eu tenho uma única rota em minha página Global.asax.vb assim ...

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

Isso id é para minha home page. É exibido quando alguém navega para o meu: http://example.com/

Mas, isso também funciona: http://example.com/7

Eu gostaria de não ter ligações em qualquer lugar no meu site para o endereço com id de 7. Mas, a função Html.RouteLink() gera os.

Para uma vista de modelo que é um filho da home page ...

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

... gera a seguinte tag âncora:

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

Como posso substituir o href gerado pela função Html.RouteLink() para minha home page?

Foi útil?

Solução

Adicionar uma nova rota antes de sua rota "IdOnly" para a home page:

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

RouteLink usará o mapeamento primeiro combinados na tabela de roteamento para gerar o link.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top