我一直在努力学习ASP.NET MVC 3,除了路由方面的事情也很顺利,无论我尝试什么,我似乎都无法让它们变得非常正确。
我在主页面上有一个ActionLink:
@Html.ActionLink("Contracts", "List", "Contract",
new { User.Identity.Name, page=1 })
这意味着在ContractController中访问此方法:
public ViewResult List(string user, int page = 1)
{
//snip
}
我的路线是:
routes.MapRoute(
null,
"Page{page}",
new { Controller = "Contract", action = "List" }
);
routes.MapRoute(
null,
"Page{page}",
new { Controller = "Contract", action = "List", user = "", page = 1 }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
此链接现在将返回404错误,因为它无法在控制器“Home”中找到操作“List”,这显然意味着它没有使用任何一条路径。
在我尝试向ActionLink添加参数之前一切正常,基本上,我做错了什么?
非常感谢。
答案 0 :(得分:1)
亚历,
你正在完全正确地执行所有其他位,但是actionlink缺少参数,请尝试使用actionlink:
@Html.ActionLink("Contracts", "List", "Contract",
new { User.Identity.Name, page = 1 }, null)
在这种情况下,添加null
作为最终参数(htmlAttributes
)就是你所缺少的(Html.ActionLink
有9次重载,所以很容易错过正确的实现)。