带ID的Html.Actionlink

时间:2013-04-10 02:25:05

标签: asp.net-mvc-4

我有这段代码:

@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,最新版本。

1 个答案:

答案 0 :(得分:11)

我怀疑您没有为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