2011-06-14 83 views
0

我是mvc的新手,正在玩albumstore教程。在我的索引视图中,我有一个这样的循环。mvc route查询

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

这导致URL http://localhost:59443/store/Browse?genre=Dicso

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

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

然而,这会产生与结构的URL http://localhost:59443/store/Details/2

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

回答

1

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

在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 
    ); 

} 
+0

ahhhh ok。是的,我看到了,但我认为控制器,行动,身份证只是占位符。谢谢 – 2011-06-14 11:41:34