2011-03-29 163 views
1

我在例如/Shows/Details/1ASP.NET MVC的ActionLink帮助

<%= Html.ActionLink(item.venue, "Details", "Venues", new { name = item.venue }) %>

这显示地点显示在正在播放的名称在视图下面的动作链接节目,但我需要它要链接到Venue而不是Shows控制器,因为目前它创建的URL是/Shows/Details?Length=6,当它需要去/Venues/Details?Name=VenueName

Venues控制器的名称是VenuesController。

感谢

回答

6

您正在使用的.ActionLink错误的过载。试试这个代替...

<%= Html.ActionLink(item.venue, "Details", "Venues", new { name = item.venue }, new {}) %> 

它目前正在选择string, string, object, object过载。您的“场地”字符串正在用于路由数据。

+0

顺便说一句,我敢肯定,如果你检查'a'标签有'name ='{item.value}''属性。 – 2011-03-29 16:42:23

2

这条路线添加到您的Global.asax:

routes.MapRoute(
    "Venue", 
    "Venues/{name}", 
    new { controller = "Venues", action = "Details", name = UrlParameter.Optional } 
); 

然后调用它像这样:

<%= Html.ActionLink(item.venue, "Details", "Venues", new { name = item.venue }, new{}) %> 

将呈现:

/地点/ NameOfTheVenue