2013-04-10 5 views
6

У меня есть этот код:Html.ActionLink с ID

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

Этот код генерирует этот HTML:

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

Но то, что я хочу это генерировать это:

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

Как это исправить?

PS - Я видел это сообщение на SO, которое, кажется, указывает, что я делаю это правильно, но я не получаю результаты, которые я хочу. Я использую последнюю версию MVC4.

ответ

10

Я подозреваю, что у вас нет маршрута, настроенного для Home/Blog/{BlogId}. Так что если вы хотите, чтобы иметь возможность написать это (как то, что вы показываете в вашем коде):

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

Вы должны иметь маршрут, как это:

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

Обратите внимание на третью часть адреса который называется blogid. Но если вы не хотите, чтобы настроить другой маршрут, то вы можете просто переписать ссылку как:

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

Обратите внимание на id от параметра.

+0

Согласовано с 'new {id = Model.BlogId}'. Указание 'id' может исправить это. –

+2

Указание 'id' **" будет "** исправить его, а не только **" возможно "**;) –

+0

Yup - это сработало: @ Html.ActionLink (« Назад в блог »,« Блог »,« Главная », , new {id = Model.BlogId}, null) –

Смежные вопросы