我有这样的城市页面:mysite.com/city-london.aspx。 像mysite.com/city/london这样的路线很容易。但我必须使用city-london.aspx来支持旧网址
我如何为此做出一条路线?下面的代码对我不起作用:-(。我想要的只是在RegisterRoutes中写作
routes.MapRoute(
"City",
"city-{id}.aspx",
new { controller = "Home", action = "City", id = UrlParameter.Optional }
);
更新:
下面的代码对我有用,但我不想这样编码。
protected void Application_BeginRequest(object sender, EventArgs e)
{
var m = Regex.Match( Request.Url.AbsolutePath, @"/city-(.+?)\.aspx" );
if (m.Success)
{
var path = "/?id=" + m.Groups[1].Value;
Context.RewritePath(path, true);
}
}
答案 0 :(得分:1)
将此代码放在默认路由之前
routes.MapRoute(
name: "City",
url: "{pge}",
defaults: new { controller = "Home", action = "City" },
constraints: new { pge = @"^city-[a-z]{1,10}.aspx$" }
);
答案 1 :(得分:0)
* .aspx是IIS的已知扩展,因此将以不同方式处理。如果删除路径定义中的.aspx,然后浏览到mysite.com/city-london,它应该可以正常工作。如果没有,请发布错误,如果有的话。