在ASP.NET MVC中通过URL路由实现对多语言的支持

对于一个需要支持多语言的Web应用,一个很常见的使用方式就是通过请求地址来控制界面呈现所基于的语言文化,比如我们在表示请求地址的URL中将上语言文化代码(比如en或者en-US)来指导服务器应该采用怎样的语言来显示界面的内容。对于一个ASP.NET MVC应用来说,我们很容易通过URL路由来实现这样一个功能。

在具体介绍实现之前,我们通过一个简单的例子谈谈最终实现的效果。在通过ASP.NET MVC项目模板创建的空Web应用中,我们创建了如下一个HomeController,默认的Action方法Index用于呈现一个登录View。作为Model的LoginInfo类包含UserName和Password两个属性,分别表示登录输入的用户名和密码。需要注意的是,在两个属性上应用了DisplayAttribute并通过资源的方式指定了显示名称以实现对多语言的支持。

   1: public class HomeController : Controller   2: {   3:     public ActionResult Index()   4:     {   5:         return View(new LoginInfo());   6:     }   7: }   8:   9: public class LoginInfo  10: {  11:     [Display(Name ="UserName", ResourceType = typeof(Resources))]  12:     public string UserName { get; set; }  13:  14:     [Display(Name="Password", ResourceType = typeof(Resources))]  15:     [DataType(DataType.Password)]  16:     public string Password { get; set; }  17: }

如下所示的Action方法Index对应的View的定义,这是一个基于LogInfo的强类型View。

   1: @model MvcApp.Models.LoginInfo   2: @using (Html.BeginForm())   3: {   4:     @Html.EditorForModel()   5:     <input type="submit" value="@MvcApp.Properties.Resources.Login" />   6:     <input type="button" value="@MvcApp.Properties.Resources.Cancel" />   7: }

在Global.asax中,我们修改了默认添加的URL路由注册代码,使请求URL中包含相应的语言文化信息({culture})。

   1: public class MvcApplication : System.Web.HttpApplication   2: {   3:     //其他成员   4:     public static void RegisterRoutes(RouteCollection routes)   5:     {   6:          //其他操作   7:         routes.MapRoute(   8:             name: "Default",   9:             url: "{culture}/{controller}/{action}/{id}",  10:             defaults: new { culture="en", controller = "Home", action = "Index", id = UrlParameter.Optional }  11:         );  12:     }  13: }

我们直接运行该程序,并在请求地址中指定不同的Culture(en和zh),界面呈现基于的语言正是我们期望的。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索应用
, 语言
, 路由
, public
, 多语言对应
, password
, 一个
mvc默认路由
,以便于您获取更多的相关知识。

时间: 2024-10-30 15:41:43

在ASP.NET MVC中通过URL路由实现对多语言的支持的相关文章

ASP.NET MVC中创建自定义路由约束

创建一个路由约束(C#) 你能够使用路由约束来限制匹配一个特殊路径的浏览器请求.你能够使用一 个正则表达式来制定一个路由约束. 例如,假设你已经定义路由如下: Listing 1 - Global.asax.cs routes.MapRoute(    "Product",    "Product/{productId}",    new {controller="Product", action="Details"} );

ASP.NET MVC中对数据进行排序的方“.NET研究”法

本系列是讲解如何在asp.net mvc中对数据进行展示.排序.分页等的系列文章.在上周的文章中,一步一步教会了大家如何使用ASP.NET MVC框架去的展示数据.在上周的文章中,我们先用Visual Studio创建了一个新的ASP.NET MVC应用程序,接着连接到了Northwind数据库,并展示了如何使用微软的LINQ-SQL的工具去访问数据库中的数据,接着指导如何去实现视图层去展示产品信息及如何设计控制器. 本文是在上一篇文章的例子基础上,展示了如何去实现数据的双向排序.如果你是已经熟

一起谈.NET技术,ASP.NET MVC中对数据进行排序的方法

本系列是讲解如何在asp.net mvc中对数据进行展示.排序.分页等的系列文章.在上周的文章中,一步一步教会了大家如何使用ASP.NET MVC框架去的展示数据.在上周的文章中,我们先用Visual Studio创建了一个新的ASP.NET MVC应用程序,接着连接到了Northwind数据库,并展示了如何使用微软的LINQ-SQL的工具去访问数据库中的数据,接着指导如何去实现视图层去展示产品信息及如何设计控制器. 本文是在上一篇文章的例子基础上,展示了如何去实现数据的双向排序.如果你是已经熟

在ASP.NET MVC中使用IIS级别的URL Rewrite

原文 在ASP.NET MVC中使用IIS级别的URL Rewrite 大约一年半前,我在博客上写过一系列关于URL Rewrite的文章(2.3.4),把ASP.NET平台上进行URL Rewrit的方式和各自地特点进行了较为详细的描述.应该来说,已经讲的非常具体,可以应对90%的情况.其实IIS Rewrite的原理非常容易理解,进行一些简单的变化和推断之后,便可以得出一些问题的原因和解决方案.现在我们就来看一个真实案例:在ASP.NET MVC中使用IIS级别的URL Rewrite. 在

学习ASP.NET MVC(二) 识别URL的Routing组件

一.摘要 本篇文章从基础到深入的介绍ASP.NET MVC中的Routing组件. Routing翻译过来是"路由选择", 负责 ASP.NET MVC的第一个工作:识别URL, 将一个Url请求"路由"给Controller. 由于今天下午参加了博客园北 京俱乐部的聚会, 所以本篇文章的完工时间晚了点, 还好也是在今天发表, 总算兑现了"每日一篇"的承诺 . 不久丁学就会发布北京博客园聚会活动的资料了, 我在这里先预告了! 二.承上启下 第一篇

ASP.NET MVC中你必须知道的13个扩展点

ScottGu在其最新的博文中推荐了Simone Chiaretta的文章13 ASP.NET MVC extensibility points you have to know,该文章为我们简单介绍了ASP.NET MVC中的13个扩展点.Keyvan Nayyeri(与Simone合著了Beginning ASP.NET MVC 1.0一书)又陆续发表了一些文章,对这13个扩展点分别进行深入的讨论.我将在 以后的随笔中对这些文章逐一进行翻译,希望能对大家有所帮助. ASP.NET MVC设计

asp.net MVC 中的过滤器 ,一个路径设置对应一个过滤器类的对象吗

问题描述 asp.net MVC 中的过滤器 ,一个路径设置对应一个过滤器类的对象吗 asp.net MVC 中的过滤器 ,一个路径设置对应一个过滤器类的对象吗 .还是多个路由对应一个过滤器对象.有没有大神给讲解下路由和过滤器的对应关系代码如下:控制器代码: [CustAuthorize(""list"")] [Route(""list"")] public ActionResult List() { return View(

包含在ASP.NET MVC中的过滤器

在深入研究如何编写过滤器之前,首先看看包含在ASP.NET MVC中的过滤器. ASP.NET MVC包括了如下3种即开即用的动作过滤器: Authorize:该过滤器用于限制对控制器或控制器动作的访问. HandleError:该过滤器用来指定一个处理异常的动作,这个异常是从动作方法的内部抛出的. OutputCache:该过滤器用来为动作方法提供输出的缓存. 接下来将依次深入讨论这3个过滤器. 1  Authorize AuthorizeAttribute是包含在ASP.NET MVC中默认

在 Asp.NET MVC 中使用 SignalR 实现推送功能

原文http://www.cnblogs.com/kesalin/archive/2012/11/09/signalr_push.html 在 Asp.NET MVC 中使用 SignalR 实现推送功能 罗朝辉 ( http://www.cnblogs.com/kesalin/ ) CC许可,转载请注明出处   一,简介 Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架.它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户