我的ASP.NET MVC App中只有一条路径:
routes.MapRoute(
"Post",
"post/{url}",
new { controller = "Blog", action = "Post" }
);
当我转到/post/MyTestBlahBlah
时,它正确匹配,并调用Blog.Post(网址)。
然而,当我去/post/2010/03/MyTestBlahBlah
时,我得到了404。
如果路线中存在斜杠,如何使路线匹配网址?
注意:我的网址不是固定为/年/月/日,它们可以是任何格式,这就是为什么我要匹配所有网址。我需要它被捕获并传递到控制器(而不是使用“*”)来帮助测试 - 我不希望Controller从Response对象中读取URL。
答案 0 :(得分:4)
在你的情况下,我会在之前添加一条新的路线那条路线:
routes.MapRoute(
"Post_Verbose",
"post/{year}/{month}/{url}",
new { controller = "Blog", action = "Post" });
或者简单地说:
routes.MapRoute(
"Post",
"post/{*url}",
new { controller = "Blog", action = "Post" });
答案 1 :(得分:2)
我设法找到了解决方案here。您需要在参数名称({*url}
)前加上“*”。具有讽刺意味的是,我尝试的第一件事是{url*}
!
routes.MapRoute(
"Post",
"post/{*url}",
new { controller = "Blog", action = "Post" }
);