ASP.NET MVC与参数基本路由(ASP.NET MVC basic routing with

2019-09-20 15:58发布

我一直在努力学习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错误,因为它无法找到控制器“家”,这显然意味着它没有使用第一路线的任一行动“清单”。

一切工作之前,我试图参数添加到ActionLink的,所以基本上,我究竟做错了什么?

非常感谢。

Answer 1:

亚历克斯,

你绝对正确完成所有其他位,但是ActionLink的具有丢失的参数,试试这个为你的ActionLink:

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

添加null作为最终参数( htmlAttributes )是所有的对你的思念在这种情况下(有9个重载Html.ActionLink ,所以很容易错过正确执行)。



文章来源: ASP.NET MVC basic routing with parameters