具有多个参数的ActionLink

时间:2011-04-08 10:25:32

标签: asp.net-mvc actionlink

我想用我的/?name=Macbeth&year=2011创建一个像ActionLink这样的网址,我试过这样做:

<%= Html.ActionLink("View Details", "Details", "Performances", new { name = item.show }, new { year = item.year })%>

但它不起作用。我该怎么做呢?

2 个答案:

答案 0 :(得分:60)

您正在使用的重载使year值最终出现在链接的html属性中(检查渲染的源)。

重载签名如下所示:

MvcHtmlString HtmlHelper.ActionLink(
    string linkText, 
    string actionName, 
    string controllerName, 
    object routeValues, 
    object htmlAttributes
)

您需要将您的路线值放入RouteValues字典中,如下所示:

Html.ActionLink(
    "View Details", 
    "Details", 
    "Performances", 
    new { name = item.show, year = item.year }, 
    null
)

答案 1 :(得分:7)

除了MikaelÖstberg之外,在你的global.asax

中添加类似的内容
routes.MapRoute(
    "View Details",
    "Performances/Details/{name}/{year}",
    new {
        controller ="Performances",
        action="Details", 
        name=UrlParameter.Optional,
        year=UrlParameter.Optional
    });

然后在您的控制器中

// the name of the parameter must match the global.asax route    
public action result Details(string name, int year)
{
    return View(); 
}