MVC3路由:将路径的一部分作为"路径"参数传递

Jos*_*jos 3 .net asp.net-mvc

假设我有类似的动作

public ActionResult TheAction(string path) { ... }
Run Code Online (Sandbox Code Playgroud)

我想做的是让像www.myapp.com/controller/TheAction/path/to/content这样的请求将路径的"path/to/content"部分作为操作的"path"参数传递.

我的猜测是,我必须摆弄一个自定义路线/请求处理程序,但在戴上复合器的手套之前,我想看看你们是否有任何其他建议.

sma*_*man 6

只需/{controller}/{action}/{*path}在路线注册中注册即可.

这使得最后一个参数成为了一个全能,所以它将包含路径的其余部分,就像你想要的那样.

所以它看起来像:

        routes.MapRoute(
            "HasCatchAllPath", 
            "{controller}/{action}/{*path}", 
            new { controller = "Home", action = "Index" }  
        );
Run Code Online (Sandbox Code Playgroud)