您的位置:首页技术开发.Net 专栏 → ASP.NET MVC应用程序的本地化、单元测试

ASP.NET MVC应用程序的本地化、单元测试

时间:2009/7/10 8:21:00来源:本站整理作者:我要评论(0)

很多使用 ASP.NET 传统 WebForm 表单技术的 web 开发者,对微软新的开源 ASP.NET 扩展很感兴趣,这个新的扩展称为 ASP.NET MVC。对于软件设计,将用户界面(视图)、运行逻辑(控制器)和数据(模型)分割开来的理念具有很多优点。

       其一,这种分割,虽然比通常情况要求投入稍多的工作,但有助于保持应用程序的可维护性。另一个优点是它能够更好地对你的代码进行单元测试。framework 框架(以及它的 Visual Studio 内置包)可帮助你创建单元测试结构,例如,以从控制器的方式创建;而你的任务就是编写实际的测试代码。ASP.NET MVC 1.0 刚刚推出才三个月,因此要在行业内获得较好的应用还需要时间。不过,无论你使用传统的 WebForm 表单技术还是 ASP.NET MVC,某些要求仍将是不变的:你需要对用户界面进行测试、本地化以及进行细节调整。在本文中,我们将学习使用不同的方式对 ASP.NET MVC 应用程序进行单元测试,如何对多种语言进行本地化,以及在最后,学习如何在用户界面中添加 AJAX 触控,其中的用户界面使用 MVC 项目中的视图实现。

从本地化开始

对于网页应用程序,创建多种语言的用户界面并不是什么新问题。事实上,ASP.NET 从最早的版本开始就内置了对本地化的支持。例如,你可能使用用户局部或全局资源,并在控制和/或 .aspx 文件中使用 ﹤%$ %﹥ 构造进行相关的引用。ASP.NET MVC 应用程序中的视图通常是常规的 .aspx 文件,因此你可以使用与 MVC 应用程序中完全相同的方法(参见图 1)。

ASP.NET MVC 应用程序的缺省外观和布局

图 1. ASP.NET MVC 应用程序的缺省外观和布局。

除了这种传统的本地化方法,你还可以将这种逻辑添加到控制器类中。由于使用 ﹤%$ %﹥ 是一种有点枯燥的方法,你可以使用该构造,根据当前所用的语言,从控制器返回不同的视图。这是非常有用的,尤其,当不同语言版本的视图不必保持一致时。例如,视图的英文版比法语版具有更好的扩张性。

下面,我们看看实际操作中的这两种选择。假设你开始创建了一个简单的 ASP.NET MVC 应用程序,尚未进行任何定制。Visual Studio 缺省创建的应用程序结构包含 Home 和 Account 控制器。例如,如果需要对 Home/About 文本进行本地化,你可以按照以下方式进行操作。

首先,你可以使用传统的本地化方法:使用资源。例如,要使用全局资源,你需要将 App_GlobalResources 文件夹添加到你的解决方案中。在 Visual Studio 的解决方案管理器(Solution Explorer)中右键点击项目节点,选择 Add/Add ASP.NET Folder/App_GlobalResources 。这样就可以创建所需的文件夹。

下一步是添加资源文件。在解决方案管理器,右键点击新创建的文件夹,在弹出菜单中选择 Add/New Item。这将打开 Add New Item 对话框,从中选择资源文件(Resources File )图标。为资源文件命名之后,单击 OK,Visual Studio 将会将它添加到你的项目中。然后,你可以在显示的表格中键入资源字符串(图 2)。使用资源时,对于在应用程序中进行本地化的每个字符串,你需要指定一个标识符。

在ASP.NET MVC应用程序中使用资源字符串进行本地化 

图 2. 在 ASP.NET MVC 应用程序中使用资源字符串进行本地化。


在开始对应用程序进行本地户之前,指定容易识别的字符串是一个好习惯,因为在试图页面中引用字符串时,你需要这些标识符。另外需记住,许多字符串对于每个页面都是唯一的,因此可能存在多个字符串,你可以在多个视图中使用它们,有时需要标识符名称能够反应这种情况。引用本地化的字符串很简单:你可以使用 ASP.NET 2.0 中引入的 ﹤%$ Resources %﹥构造。例如,在 MyResources.resx 资源文件中有一个名为 HelloWorldText 的字符串,下面这段 .aspx 文件中代码,可以根据用户的首选语言,正确地转换为本地化字符串:

 ﹤asp:Literal ID="Literal1" runat="server"
Text="﹤%$ Resources: MyResources, HelloWorldText %﹥" /﹥

关于 ASP.NET MVC 查找正确的本地化版本,framework 框架使用专业的文件命名规则。MyResources.resx 资源文件包含相关语言的字符串,该语言被认为是该应用程序的初始语言。如果用户的浏览器未指定语言,或者你没有在代码中指定一个语种,那么将使用初始语言字符串。不过,如果用户选择的语言为德语 那么该语言的首字母所写“de”将添加到资源文件名称后:MyResources.de.resx。其他语言也一样,例如 MyResources.es.resx  文件中包含西班牙语字符串。对于本地化,你可以还想要在 .aspx 文件的 @Page 标签中添加专用指令。比如,想要自动检测用户浏览器语言设置,你可以在该标签(指定缺省语言的冒号之后)中添加 UICulture="

相关视频

    没有数据

相关阅读 ie6下面asp.net mvc3 部署应用程序在asp.net mvc中实现右键菜单和简单的分页教程ASP.NET中MVC框架模式方法如何实现分享ASP.NET 2.0 中保护机密数据ASP.NET配置文件Web.configASP.NET 2.0 AJAX中Webservice调用方法ASP.NET 的安全认证实现ASP.NET生成随机密码功能

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 什么是.NET中的TDD?ASP.NET AJAX入门简介 WebMatrix入门教程VC++2008中如何调用GetOpenFileName打开文件PlaySound函数在VC++6.0中如何播放音乐及声请问VC++回调函数怎么用

人气排行 嵌入式实时操作系统VxWorks入门教程ArrayList 与 string、string[] 的转换C#遍历整个文件夹及子目录的文件代码WebMatrix入门教程asp.net判断文件或文件夹是否存在c#判断数据NULL值的方法vc++6.0怎么写Windows简单窗口代码.net解决数据导出excel时的格式问题