2013-02-20 37 views
0

我想在用户输入URL到浏览器时根据ID重定向用户。例如,用户输入:在mvc中将base/id路由到controller/action/id 4

http://localhost:50431/10213 

,他们将被重定向到:

http://localhost:50431/home/job/10213 

默认路由:

routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{jobno}", 
       defaults: new { controller = "Home", action = "Job", jobno = UrlParameter.Optional } 
      ); 

我怎样才能做到这一点?

回答

1

你可以尝试这样的事:

routes.MapRoute(
    name: "Job Number", 
    url: "{jobno}", 
    defaults: new { controller = "Home", action = "Job" }, 
    new { jobno = @"[0-9]*" }  
); 

并把它放到另一条路线之上。添加的参数是为了避免路线捕获像http://localhost:50431/foobar这样的URL,但只有那些包含数字的URL。

请注意我目前没有办法测试它,所以您可能需要稍微调整它。

+0

是的,我调整了它,现在它的作品。谢谢!这里是我改变了:'routes.MapRoute( name:“Job Number”, url:“{jobno}”, 默认值:new {controller =“Home”,action =“Job”,jobno = new {jobno = @“[0-9] *”}} );' – iswinky 2013-02-20 09:54:04

0

我觉得这是最好的解决办法:

routes.MapRoute(
    name: "Job Number", 
    url: "{jobno}", 
    defaults: new { controller = "Home", action = "Job", .jobno = UrlParameter.Optional }, 
    constraints: new { jobno = @"[0-9]*" }  
); 

我测试了这一点,它工作正常,他在评论的答复并没有为我正常工作。