2

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

非常感谢。

4

1 回答 1

1

亚历克斯,

您正在完全正确地执行所有其他位,但是 actionlink 缺少参数,请为您的 actionlink 尝试此操作:

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

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

于 2012-08-01T20:33:43.810 回答