ASP.NET路由中的双向路由

ASP.NET路由中的双向路由,asp.net,routing,asp.net-routing,Asp.net,Routing,Asp.net Routing,好吧,交易如下: 我有一个类似mysite.com/UnitDetails.aspx?UnitID=123的aspx页面 现在,我已经设置了路由,以便能够接收类似mysite.com/my/Path/123的内容,并将其重定向到UnitDetails.aspx。这很有效 但是,如果用户在aspx页面中键入内容,我还希望能够将用户重定向到干净的url。例如,如果您将mysite.com/UnitDetails.aspx?UnitID=123作为书签,我希望它显示为mysite.com/My/Pat

好吧,交易如下:

我有一个类似mysite.com/UnitDetails.aspx?UnitID=123的aspx页面

现在,我已经设置了路由,以便能够接收类似mysite.com/my/Path/123的内容,并将其重定向到UnitDetails.aspx。这很有效

但是,如果用户在aspx页面中键入内容,我还希望能够将用户重定向到干净的url。例如,如果您将mysite.com/UnitDetails.aspx?UnitID=123作为书签,我希望它显示为mysite.com/My/Path/123

我怎样才能做到这一点?以下是我目前的路线:

        RouteTable.Routes.MapPageRoute("unit_details", "{area}/{property}/{unit_id}", "~/UnitDetails.aspx")

好吧,我知道了

只需将此添加到页面加载中的my UnitDetails.aspx代码中:

        //issue a 301 if legacy route requested to boost SEO
    if (Request.Url.AbsolutePath.Contains("UnitDetails.aspx"))
    {
        var unit = BeachGuide.Models.Unit.GetById(Convert.ToInt32(Request.Params["UnitID"]));
        Response.RedirectPermanent(unit.relative_url);
    }
所以现在如果他们请求新的url,他们就不会陷入无限循环。如果他们请求旧url,我们有一个基本案例,通过301重定向将他们重定向到新url。这将帮助搜索引擎知道如何使用新路由作为规范url