我想用我的/?name=Macbeth&year=2011
创建一个像ActionLink
这样的网址,我试过这样做:
<%= Html.ActionLink("View Details", "Details", "Performances", new { name = item.show }, new { year = item.year })%>
但它不起作用。我该怎么做呢?
答案 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();
}