2013-04-10 16 views
6

mam ten kod:Html.ActionLink z ID

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

Ten kod generuje to HTML:

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

Ale co Chcę to, aby wygenerować to:

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

Jak to naprawić?

PS - Widziałem ten wpis na SO, który wydaje się wskazywać, że robię to we właściwy sposób, ale nie osiągam pożądanych wyników. Używam najnowszej wersji MVC4.

Odpowiedz

10

Podejrzewam, że nie masz skonfigurowanej trasy dla Home/Blog/{BlogId}. Więc jeśli chcesz, aby móc napisać to (jak to, co pokazują w kodzie):

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

Trzeba mieć trasy tak:

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

Wskazówka trzecia część adresu URL o nazwie blogid. Ale jeśli nie chcesz skonfigurować inną trasą następnie można po prostu przepisać swój link jako:

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

obwieszczeniu id od parametru.

+0

Uzgodniono z 'nowym {id = Model.BlogId}'. Określenie "id" może go naprawić. –

+2

Określenie 'id' **" spowoduje "** naprawienie go, a nie tylko **" może "**;) –

+0

Yup - działało to: @ Html.ActionLink (" Powrót do bloga "," Blog "," Strona główna " , nowy {id = Model.BlogId}, null) –

Powiązane problemy