将基础/ id路由到mvc 4中的controller / action / id

时间:2013-02-20 09:40:04

标签: c# asp.net-mvc asp.net-mvc-routing

我希望在用户根据ID将URL输入浏览器时重定向用户。例如,用户输入:

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 }
            );

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

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

并将其置于其他路线之上。添加的参数是避免路由捕获http://localhost:50431/foobar之类的网址,但只包含包含数字的网址。

请注意我目前无法对此进行测试,因此您可能需要稍微调整一下。

答案 1 :(得分:0)

我认为这是最好的解决方案:

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

我已经对此进行了测试并且工作正常,他在评论中的回复对我来说无效。