首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据UICulture设置链接路由?

如何根据UICulture设置链接路由?
EN

Stack Overflow用户
提问于 2011-05-11 22:16:58
回答 2查看 707关注 0票数 5

我有MVC4项目(不是ASP.NET )。我需要创建基于用户输入语言的url路由。

Project只有两种语言"he“和"en”。

用户可以进入站点,如果他的文化设置为he-IL以外的任何内容,我想将他重新路由到website.com/en/否则转到website.com/he/

Default.aspx应该保留使用全球化功能的同一页面,根据浏览器中用户的文化设置转换值。

我该怎么做呢?除了用Global.asax编写路由之外,我还应该做什么以及如何编写此路由。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-19 14:12:47

似乎您正在尝试对路由做一些意想不到的事情。

如果URL中的语言什么也不做,而您需要让它只出现在URL中,那么您可以使用HTTP模块重写URL来删除它并将其添加回生成的html,或者简单地将同一站点映射到IIS中的两个虚拟文件夹/en和/he,并在/处创建一个简单的Default.aspx页面,根据用户文化重定向到适当的页面。

票数 0
EN

Stack Overflow用户

发布于 2011-05-17 03:21:21

这应该不难。是的,Global.ascx是最好的起点。

首先绘制路线图,

代码语言:javascript
复制
    protected void RegisterRoutes(RouteCollection routes)
    {
        //Contact route for EN culture
        routes.MapPageRoute(
            "contactRouteEN",
            "en/contact",
            "~/Contact.aspx"
        );

        routes.MapPageRoute(
            "contactRouteHE",
            "he/contact",
            "~/Contact.aspx"
        );
    }

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

这就建立了路线。

你描述的问题听起来更像是全球化问题,而不是url路由问题。问题的url部分对用户来说是粉饰的,但在我看来不会攻击潜在的问题。ASP.Net为全球化提供了便利。例如,您可以使用LocalResources。要对应用程序根级别(而不是嵌套在文件夹中)上的页面执行此操作,请右键单击该网站,然后选择Add ASP.Net Folder,选择App_LocalResources。右键单击App_LocalResources文件夹,然后选择“添加项目”,然后选择“资源文件”。

根据计划作为目标的区域性来命名文件非常重要

您可以将第一个Contact.aspx.resx文件创建为默认的资源文件(也许是英语?)

ASP.Net将尝试查找要与资源文件匹配的最具体的区域性,如果未提供更具体的区域性,则将求助于默认区域性。

命名约定遵循PageName.aspx.languageID-cultureId.resx

你可以让Contact.aspx.he.resx

例如,在label控件中,您可以这样设置它

代码语言:javascript
复制
<asp:Label ID="lbContactMessage" runat="server" Text="something" meta:resourcekey="yourmatchingkeyfromresourcefile"></asp:Label>

有关更多信息,请参阅http://msdn.microsoft.com/en-us/library/c6zyy3s9.aspx

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5965725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档