2013-04-10 142 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 } 
); 

通知的URL的第三部分名为blogid。但是,如果你不想配置其它路由那么你可以重写你的链接:

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

通知的id的参数。

+0

同意'new {id = Model.BlogId}'。指定'id'可能会解决它。 – 2013-04-10 02:44:40

+2

指定'id' **“将**”修复它,而不仅仅是**“可能”**;) – 2013-04-10 02:47:18

+0

是的 - 这工作:@ Html.ActionLink(“回到博客”,“博客”,“家” ,new {id = Model.BlogId},null) – 2013-04-10 03:04:06