当前位置:  开发笔记 > 编程语言 > 正文

使用ASP.NET MVC的多语言网站

如何解决《使用ASP.NETMVC的多语言网站》经验,为你挑选了1个好方法。

在构建多语言网站(使用ASP.NET Web表单)时,我将使用HTTP模块重写URL,最终得到友好的东西(对于人类和搜索引擎),如:

uk/products/product_category_one/sub_category_one/index.aspx
uk/products/product_category_one/sub_category_one/widget_mk5.aspx
es/productos/categoría_de_producto_una/widget_mk5.aspx

我(新手)对MVC的理解是URL应采用的格式

控制器/动作/标识符

因此,使用MVC复制上述功能将最终得到类似于以下内容的URL:

products/category/123/product_category_one/sub_category_one
products/items/456/widget_mk5

问题..

我可以在"控制器"细分受众群之前将国家/地区代码插入到网址中吗?

是否可以将"产品"和"产品"映射到同一个控制器?

谢谢你的帮助

编辑: 除了下面的Panos回答,我在ASP.NET网站上找到了更多信息.



1> Panos..:

该URL几乎可以采用您喜欢的任何其他形式.有关更多信息,请查看ASP.NET MVC框架(第2部分):URL路由.只是为了开始(因为我不确定它是否是最佳解决方案),您可以在global.asax中添加两个新路由:

        routes.MapRoute(
            "ukRoute",
            "{lang}/Products/{action}/{id}/{subcategory}",
            new { lang = "uk", controller = "Products", action = "Index", id = "", subcategory = "" }
        );
        routes.MapRoute(
            "esRoute",
            "{lang}/Productos/{action}/{id}/{subcategory}",
            new { lang = "es", controller = "Products", action = "Index", id = "", subcategory = "" }
        );

这些路由了解以下URL(并将它们映射到ActionResult Category(string id, string subcategory)方法ProductsController):

uk/Products/Category/1/A
es/Productos/Category/1/A

如果要在视图中创建此类URL,可以使用以下内容:

<%= Html.RouteLink("English 1.A", "ukRoute", new { lang = "uk", action = "Category", id = "1", subcategory = "A" })%>
<%= Html.RouteLink("Spanish 1.A", "esRoute", new { lang = "es", action = "Category", id = "1", subcategory = "A" })%>


我认为[在这篇博客中引入的方法](http://blog.maartenballiauw.be/post/2010/01/26/Translating-routes-(ASPNET-MVC-and-Webforms).aspx)是一个更好的主意.
推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有