如何编写 asp.net MVC 路由来重写 url,如 mysite.com/city-london.aspx



>我有这样的城市页面:mysite.com/city-london.aspx。像 mysite.com/city/london 这样的路线很容易。但我必须使用city-london.aspx来支持旧的URL

我如何为此制定路线?下面的代码对我不起作用:-(。我想要的只是写在注册路线中

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

把这段代码放在默认路由之前,

routes.MapRoute(
               name: "City",
               url: "{pge}",
               defaults: new { controller = "Home", action = "City" },
               constraints: new { pge = @"^city-[a-z]{1,10}.aspx$" }
           );

*.aspx 是 IIS 已知的扩展,因此将以不同的方式处理它。如果删除路由定义中的.aspx,然后浏览到 mysite.com/city-london,它应该可以正常工作。如果没有,请发布错误(如果有)。

最新更新