代码之家  ›  专栏  ›  技术社区  ›  Matt Anxo P

ASP.NET MVC路由:如何命名与URL中完全不同的操作

  •  0
  • Matt Anxo P  · 技术社区  · 14 年前

    这是我之前几个问题的延续。我有一个名为User controller的控制器,我想处理两类对象上的操作:User和UserProfile。在其他操作中,我想为这两个对象和UserController内定义一个编辑操作。它们需要是单独的操作,我不介意在 控制器 ,但我更希望URL是这样的:

    http://www.example.com/User/Edit/{userID}
    

    http://www.example.com/User/Profile/Edit/{userProfileID}
    

    对于上下文,前面的问题是 here here

    谢谢。

    3 回复  |  直到 7 年前
        1
  •  6
  •   Rob    14 年前

    只是个建议,但你不能做这样的事情来绘制正确的路线图吗?

    routes.MapRoute(
        "ProfileRoute", // Route name
        "User/Edit/{userProfileID}", // URL with parameters
        new { controller = "User", action = "EditUser" } // Parameter defaults
    );
    
    routes.MapRoute(
        "ProfileEditRouet", // Route name
        "User/Profile/Edit/{userProfileID}", // URL with parameters
        new { controller = "User", action = "Editprofile" } // Parameter defaults
    );
    

    编辑:

        2
  •  4
  •   Patrick McDonald    14 年前

    你可以试试下面的方法:(未经测试)

    routes.MapRoute(
        "EditUser",
        "User/Edit/{userID}", 
        new { controller = "User", action = "EditUser" });
    
    routes.MapRoute(
        "EditProfile",
        "User/Profile/Edit/{userProfileID}",
        new { controller = "User", action = "EditProfile" });
    

    编辑:

    http://mvccontrib.codeplex.com/ )语法稍微清晰一些:

    (using MvcContrib.Routing;)
    
    MvcRoute
        .MappUrl("User/Edit/{userID}")
        .WithDefaults(new { controller = "User", action = "EditUser" })
        .AddWithName("EditUser", routes);
    
    MvcRoute
        .MappUrl("User/Profile/Edit/{userProfileID}")
        .WithDefaults(new { controller = "User", action = "EditProfile" })
        .AddWithName("EditProfile", routes);
    
        3
  •  1
  •   dotjoe    14 年前
    using MvcContrib.Routing;
    
    public class UserController : Controller
    {
        [UrlRoute(Path = "User/Edit/{userID}")]
        public ActionResult UserEdit(int userID)
        { 
    
        }
    }