ASP.NET MVC基本路由带参数

时间:2012-08-01 20:27:14

标签: asp.net-mvc-3

我一直在努力学习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添加参数之前一切正常,基本上,我做错了什么?

非常感谢。

1 个答案:

答案 0 :(得分:1)

亚历,

你正在完全正确地执行所有其他位,但是actionlink缺少参数,请尝试使用actionlink:

@Html.ActionLink("Contracts", "List", "Contract", 
             new { User.Identity.Name, page = 1 }, null)

在这种情况下,添加null作为最终参数(htmlAttributes)就是你所缺少的(Html.ActionLink有9次重载,所以很容易错过正确的实现)。