mvc路由查询

时间:2011-06-14 11:10:59

标签: asp.net-mvc razor

我是mvc的新手,正在玩专辑库教程。在我的索引视图中,我有一个这样的循环。

@foreach (var genre in Model) {
    <li>@Html.ActionLink(genre.Name, "Browse", new { genre = genre.Name })</li>       
}

会产生网址http://localhost:59443/store/Browse?genre=Dicso

在我的浏览视图中,我有类似的代码

@foreach (var album in Model.Albums) {
    <li>@Html.ActionLink(album.Title, "Details", new { id = album.AlbumId })</li>
}

然而,这会产生一个结构为http://localhost:59443/store/Details/2

的网址

有人可以告诉我为什么使用相同的代码结构是不同的。感谢

1 个答案:

答案 0 :(得分:1)

Id是一种特殊情况,因为global.asax中的路由设置。

在global.asax中你会发现类似于此的东西。

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );

}