【问题标题】:asp.net web form Custom Router Handlerasp.net web 表单自定义路由器处理程序
【发布时间】:2011-06-05 11:20:54
【问题描述】:

我正在为 Web 表单应用程序使用自定义路由处理程序。我正在使用路线来确定本地化。 IE: 如果 url 在路由中有 esfr ,它将加载西班牙语或法语资源。

例如:

www.someroute/es/checkstuff/checkstuff.aspx

将加载:

www.someroute/checkstuff/checkstuff.aspx 与西班牙资源。

我正在通过以下方式在 global.asax 中配置自定义路由:

protected void Application_Start(object sender, EventArgs e)
    {
        RegisterRoutes(RouteTable.Routes);
    }

    public static void RegisterRoutes(RouteCollection routes)
    {
        foreach (var value in _customRoutes)
        {
            routes.Add(value.RouteName, new Route(value.Route, new CustomRouteHandler(value.ResolvedRoute)));
        }
    }

其中 _customroutes 是路由列表。

有没有办法通过某种模式匹配来做到这一点,这样我就可以避免为应用程序中的每个页面添加特定的路由。虽然我知道我可以使用 t4 模板来生成路线,但我想我正在寻找一种动态的方式来创建列表

【问题讨论】:

    标签: c# asp.net internationalization webforms routes


    【解决方案1】:

    我发现使用 MapPageroute 比使用 route.Add 更简单。使用 MapPageRoute 我可以使用通配符和两个条目:

            routes.MapPageRoute("Spanish", "es/{*page}", "~/{page}");
            routes.MapPageRoute("Kreyol", "fr/{*page}", "~/{page}");
    

    我能够为西班牙语和克里奥尔语页面提供所需的路由。

    感谢大家的帮助。

    【讨论】:

      【解决方案2】:

      我将通过在BeginReguest 处理程序中使用HttpModule 进行一些简单的旧重写来处理语言部分,并让Routing 引擎处理其余部分。

      请记住,Routing 机制发生的时间远远晚于BeginRequest,因此您可以安全地确定语言,在您的线程上设置CultureInfo 并将请求 url 重写为不包含语言部分,并且您的 @ 987654327@ 永远不会知道。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-20
        • 2023-03-03
        • 1970-01-01
        • 2012-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多