2013-04-10 13 views
6

ho questo codice:Html.ActionLink con ID

@Html.ActionLink("Back To Blog","Blog","Home", new {Model.BlogId}, null) 

Che il codice sta generando questo HTML:

<a href="/Home/Blog?BlogId=1">Back To Blog</a> 

Ma quello che voglio di generare è questo:

<a href="/Home/Blog/1">Back To Blog</a> 

Come posso risolvere questo problema?

PS - Ho visto questo post su SO che sembra indicare che lo sto facendo nel modo giusto, ma non sto ottenendo i risultati che voglio. Sto usando MVC4, l'ultima versione.

risposta

10

Sospetto che tu non abbia un percorso configurato per Home/Blog/{BlogId}. Quindi, se si vuole essere in grado di scrivere questo (come quello che si mostra nel codice):

@Html.ActionLink("Back To Blog","Blog","Home", new { Model.BlogId}, null) 

È necessario disporre di un percorso come questo:

routes.MapRoute(
    name: "DefaultBlog", 
    url: "{controller}/{action}/{blogid}", 
    defaults: new { controller = "Home", action = "Blog", 
      blogid = UrlParameter.Optional } 
); 

Avviso terza parte dell'URL che è chiamato blogid. Ma se non si desidera configurare un altro itinerario, allora si può semplicemente riscrivere il collegamento come:

@Html.ActionLink("Back To Blog","Blog","Home", new { id = Model.BlogId}, null) 

Avviso il id sul parametro.

+0

Concordato con 'new {id = Model.BlogId}'. Specificare 'id' potrebbe risolverlo. –

+2

Specificare 'id' **" sarà "** correggerlo e non solo **" potrebbe "**;) –

+0

Sì - questo ha funzionato: @ Html.ActionLink (" Torna al blog "," Blog "," Home " , nuovo {id = Model.BlogId}, null) –

Problemi correlati