为一个控制器创建多个路由

时间:2012-05-04 20:58:39

标签: c# asp.net asp.net-mvc asp.net-mvc-3 routes

我在尝试为我的某个控制器创建两个自定义路由时遇到问题。我有这两种情况:

  1. 如果有人导航到/ Register,则应使用Members控制器和Index视图
  2. 如果有人导航到/ Register / NY,它应该使用Members控制器和Register视图,并将状态代码作为参数传递
  3. 这是我的global.asax文件中的内容:

    routes.MapRoute(
        "RegisterMap", // Route name
        "Register", // URL with parameters
        new { controller = "Members", action = "Index" } // Parameter defaults    
    );
    
    routes.MapRoute(
        "Register", // Route name
        "Register/{stateCode}", // URL with parameters
        new { controller = "Members", action = "Register" } // Parameter defaults       
    );
    
    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }    
    );
    

    如果我导航到/ Register / NY,一切正常,但如果我导航到/ Register,我会收到404错误。

    我做错了什么?

2 个答案:

答案 0 :(得分:0)

您的路由是正确的。

我会验证您在成员控制器中有一个Index操作。

答案 1 :(得分:0)

我查看了这个场景,它运行正常。请确认一下。

  1. 您的MembersController类存在于/ Controller /中,它扩展了Controller。
  2. MembersController包含一个没有参数或可为空的参数的方法。
  3. 索引操作方法没有HTTPPOST方法。[这可能会导致404错误。]