带参数的MVC路由

时间:2013-09-10 21:22:31

标签: c# asp.net-mvc

假设我有学生名单的学生。

我正在使用以下操作显示此列表:domain/students/index

现在我有一个学生类型列表(用户可编辑)。例如:

儿童,成人,数学,遥控等

我想按类型过滤我的学生索引页面,如下所示:

domain/students/index/mathdomain/students/index/remote

此外,当我要刷新页面时,我希望该域保持不变,这意味着,例如,如果我去编辑学生,它会将我重定向到:
domain/students/math/edit/2或类似的东西。

基本上我需要一个高级参数来保存它的状态或者可能采用不同的方法。

1 个答案:

答案 0 :(得分:0)

在RouteConfig.cs文件中

public static void RegisterRoutes(RouteCollection routes)
{
       routes.MapRoute(
       name: "StudentList",
       url: "Students/{type}",
       defaults: new { controller = "Students", 
                       action = "Index", 
                       type = UrlParameter.Optional });
}

并在您的视图中:

 <a href="@Url.RouteUrl("StudentList", 
                         new{ controller = "Students",
                              action = "Index",  
                              type = "math" //or whatever your parameter is
                            })">Math Students</a>

注意:我假设你的控制器名称是学生,你的行动名称是索引。使用“类型”作为“索引”操作中的参数来过滤学生。