带有两个变量的URL路由不起作用

时间:2011-10-16 09:40:24

标签: asp.net-mvc asp.net-mvc-routing url-routing

一个ASP.net MVC url路由有问题。我创建了这条路线(它是我的RegisterRoutes方法中的第一条路线:

routes.MapRoute(
    "Activate",
    "Account/Activate/{username}/{key}",
    new { controller = "Account", action = "Activate", username = "", key = "" },
    new { username = @"([a-z0-9\.-]+)", key = @"([a-z0-9\.-]+)" } 
);

但是当我试图像这样去网址时

http://localhost:63779/acount/activate/test/hLMqWJrwp1dK5xTqbGkP5kzUNQ4

它返回404错误

(使用UrlParameter.Optional我得到了相同的结果)

1 个答案:

答案 0 :(得分:1)

问题是您的正则表达式不正确。使用以下内容:

routes.MapRoute(
    "Activate",
    "Account/Activate/{username}/{key}",
    new { controller = "Account", action = "Activate" },
    new { username = @"^[\w\.]+$", key = @"^[\w\.]+$" }
);

显示的正则表达式将匹配包含任何单词字符的字符串(\ w与[A-Za-z0-9_]相同)或点,没有空格或其他字符。

<强>更新

在测试路线并将其复制到我的答案后,我忘了将控制器值更改为“帐户”。我已经更新了上面的路线。