ASP.NET网页编程之ASP.Net 2.0中完成多言语界面的办法
有时也搞不懂应该学那种;主要看你以后去的那个公司是使用哪种了。就像王千祥的课上说的:企业应用现在主要就三层(其实也差不多就是MVC):表示层(主要使用html写的,很简单)、业务逻辑层(主要就是应用服务器的)。最后就是数据层(其实就是学习数据库)asp.net 1.跟之前一样做界面,只是注重,把一切必要有多言语界面的笔墨都用label来做2.做完今后,在SolutionExplorer里选中这个文件,选Tools->GenerateLocalResource
3.你会发明天生了一个目次,App_LocalResources;这个目次里多了一个resx的文件。好比你的aspx文件是default.aspx,它就会天生一个叫做default.aspx.resx的文件。
4.翻开这个文件看看,本来在label中的那些笔墨都跑到这里来了
5.翻开本来的aspx文件看看source,会发明源码变了:
<%@PageLanguage="VB"MasterPageFile="~/MasterPage.master"AutoEventWireup="false"CodeFile="Default.aspx.vb"Inherits="Default2"title="UntitledPage"Culture="auto"meta:resourcekey="PageResource1"UICulture="auto"%>
…………
<asp:LocalizeID="Localize1"runat="server"meta:resourcekey="Localize1Resource1"></asp:Localize>
*********************************************************************
假如是其他的控件上的笔墨,基础上也是会主动天生的。好比button和gridview的:
<asp:ButtonID="Button1"runat="server"meta:resourcekey="Button1Resource1"Text="Button1"/><br/>
<asp:GridViewID="GridView1"runat="server"meta:resourcekey="GridView1Resource1">
<Columns>
<asp:BoundFieldHeaderText="Header1"meta:resourcekey="BoundFieldResource1"/>
<asp:BoundFieldHeaderText="Header2"meta:resourcekey="BoundFieldResource2"/>
</Columns>
</asp:GridView>
天生的resource以下:
*********************************************************************
6.注重这里:meta:resourcekey="PageResource1"和meta:resourcekey="Localize1Resource1"这就暗示这里的笔墨是从资本中读取的。
7.OK如今来做另外一种言语的资本文件。很复杂,copyDefault.aspx.resx再paste一下,然后rename为Default.aspx.fr-fr.resx注重fr-fr是你要做的言语的名字。人人假如看dvdrip的话,应当以为这跟字幕文件很像吧?
8.有人说我怎样晓得谁人言语叫甚么名字呢?很复杂,翻开ie,tools->internetoptions->languages->add,方框两头的就是了。
9.如今入手下手编纂其他资本的笔墨。翻开Default.aspx.fr-fr.resx,对比着本来的内容,把内里的内容改成法语的。
10.到此为止,我们就完成了第一阶段。ASP.Net会依据用户的言语偏好来选择显现的言语。把IE里的设置改一下,在我们刚说过的中央改成fr-fr,翻开这一页看看?假如是法语,祝贺你。假如不是,转头重做……
11.下一步,我们要同意用户选择本人的言语,而不是主动。我们会用cookie存取用户的选择。在Application级别,我们读取这个cookie并设置得当的culture和uiculture。固然,第一次出去的时分,我们仍是要读取扫瞄器的设置,这个能够从Request.UserLanguages中取得。
PrivateSupportedLanguagesAsString()={"en-us","fr-fr"}
PublicConstLANGUAGE_COOKIE_NAMEAsString="UserLanguage"
SubApplication_AcquireRequestState(ByValsenderAsObject,ByValeAsEventArgs)
DimlanguageCookieAsHttpCookie=Request.Cookies(LANGUAGE_COOKIE_NAME)
DimlanguageAsString=String.Empty
If(languageCookieIsNothing)Then
DimuserLanguagesAsString()=Request.UserLanguages
DimindexAsInteger
ForiAsInteger=0TouserLanguages.Length-1
index=Array.IndexOf(SupportedLanguages,userLanguages(i))
Ifindex>=0Then
language=SupportedLanguages(index)
ExitFor
EndIf
Next
Iflanguage=String.EmptyThen_
language=SupportedLanguages(0)
Response.Cookies.Add(NewHttpCookie(LANGUAGE_COOKIE_NAME,language))
Else
language=languageCookie.Value
EndIf
DimcultureAsCultureInfo=NewCultureInfo(language)
System.Threading.Thread.CurrentThread.CurrentUICulture=culture
EndSub
12.然后我们要有一页让用户选择言语,好比我们用两个button来做。在点击这个button以后,我们要设置这个cookie为得当的言语:
ProtectedSubButton2_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesButton2.Click
SetLanguage("fr-fr")
EndSub
ProtectedSubSetLanguage(ByVallanguageAsString)
Response.Cookies(Global.ASP.global_asax.LANGUAGE_COOKIE_NAME).Value=language
DimcultureAsCultureInfo=NewCultureInfo(language)
System.Threading.Thread.CurrentThread.CurrentUICulture=culture
Server.Transfer(Request.Path)
EndSub
注重最初的Server.Transfer(Request.Path),这是为了从头读取这一页,如许这一页也会显现新选择的言语。
13.最初我们要往失落ASP.Net的主动选择。从Default.aspx中往除:
Culture="auto"UICulture="auto"
14.翻开来看一看吧!在经过全球个人PC市场占有90%的微软对asp.net不断优化与整合后,asp.net与微软自身平台的动用上更加的高效,加上asp.net在应用上非常容易上手,相信asp.net仍会是最多客户选用的脚本语言,并会在未来几年继续领跑。 在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.ckuyun.com),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的 平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。 现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。 但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。 当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。 asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦! 逐步缩小出错代码段的范围,最终确定错误代码的位置。 逐步缩小出错代码段的范围,最终确定错误代码的位置。
页:
[1]