,ASP.net   工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛,ASP.net
您的位置:Yesky > 软件 > 开发者网络 > 微软开发专栏 > 正文
ASP.NET 2.0中构造个性化网页
[文章信息]
作者:廖煜嵘编译
时间:2005-05-26
出处:天极网
责任编辑:方舟
[文章导读]
在asp.net 2.0中,我们可以使用profile功能,构造像google那样的个性化网页
advertisement
热点推荐
· 图文详解:黑客入侵方式演示
· Java异常处理的陋习展播
· 多媒体系列教程:网页设计制作
· Powerpoint动画演示教程连载
· 光盘刻录手册:禁忌与技巧(下)
[正文]

上一页  1 2  

  首先,要实现这样的功能,我们必须使用asp.net 2.0中新提供的profile功能。Profile可以利用数据库存储关于用户的个性化信息,有点象session对象,但session对象是有生存期的,在生存期后,session对象自动失效了。而profile不同,除非显式移除它。要实现profile功能,必须先在web.config中进行定义,如下:

<system.web>
<profile>
<properties>
<add name="language" type="string"/>
<group name="Info">
<add name="DateSelected"
type="System.DateTime"/>
<add name="LastModified"
type="System.DateTime"/>
</group>
</properties>
</profile>

  要使用profile属性,可以这样:

Profile.language = "en-US"
Profile.Info.LastModified = Now
Profile.Info.DateSelected = Calendar1.SelectedDate

  在web.congfig中,将会定义一些属性/值,分别存贮将要保存的变量和值,比如lastmodified属性,定义其值是datatime类型,如此类推。而<group>标签,则是将一些相同或类似功能的变量值放在一起。在beta 1中,profile是利用access数据库来保存这些值的。

  我们为了要让用户每次在下拉框中选择要用的语言,并将其保存起来,所以在提交按钮中,写入如下代码:

Sub btnSet_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
 Profile.language = ddlLanguage.SelectedItem.Value
End Sub

  而为了记录用户每次选择日历中的日期,我们则利用profile.info.dateselected属性来记录,并且用Profile.Info.LastModified记录下用户每次选择日历中日期时的时间,如下代码:

Sub Calendar1_SelectionChanged(ByVal sender As Object, _
ByVal e As System.EventArgs)
 Profile.Info.DateSelected = Calendar1.SelectedDate
 Profile.Info.LastModified = Now
End Sub

  当页面加载时,我们可以取出预先保存在profile对象中的值,然后再在日历控件中显示上次用户显示的日期,以及用户上次选择日期时的时间。

Sub Page_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load
Calendar1.SelectedDate = Profile.Info.DateSelected
 Response.Write("Date set on " Profile.Info.LastModified)
End Sub

  而为了在每次页面加载时,能根据之前用户保存在profile对象中的语言正确显示网页,必须在page_preinit()事件中写入如下代码:

Dim lang As System.Globalization.CultureInfo

'读取用户在下拉框中选取的语言值
Dim selectedLang As String = Request("ddlLanguage")

'如果用户选择auto,则在下拉框中显示AUTO的选择项
If selectedLang = "Auto" Then
 ddlLanguage.SelectedIndex = 2
 Exit Sub
End If

' 如果是POSTBACK,则读取原来已经保存的语言信息
If selectedLang IsNot Nothing Then
 lang = New System.Globalization.CultureInfo(selectedLang)
Else
'如果是第一次调用页面
If Profile.language <> "Auto" Then
 lang = New System.Globalization.CultureInfo(Profile.language)
 Select Case Profile.language
  Case "en-US" : ddlLanguage.SelectedIndex = 0
  Case "zh-CN" : ddlLanguage.SelectedIndex = 1
  Case "auto" : ddlLanguage.SelectedIndex = 2
 End Select
Else
 '---if language is auto, then exit
 ddlLanguage.SelectedIndex = 2
 Exit Sub
End If
End If

System.Threading.Thread.CurrentThread.CurrentCulture = lang
System.Threading.Thread.CurrentThread.CurrentUICulture = lang

lblWelcomeMessage.Text = Resources.Resource.WelcomeMsg.ToString
Page.Title = Resources.Resource.PageTitle.ToString
lblSelectLanguage.Text = Resources.Resource.SelectLanguage.ToString

  下面来解释一下代码。首先,声明一个cultureinfo类型的变量,这个变量将保存用户每次选择语言后的信息。

  接下来,首先检查页面是否postback了,如果postback了(发生在页面刷新或者点击了控件,激发页面事件后,这时用户可能重新选择一种语言了),则用下拉框中用户选择的语言去初始化cultureinfo

lang = New System.Globalization.CultureInfo(selectedLang)

  而如果页面是第一次调用,则读取原来profile对象中的语言信息,并根据其是什么语言,自动设置好下拉框中的对应显示(使用case语句)。

  最后,我们设置系统的当然线程的本地化语言为设定好的lang,并设置各个控件的值为资源文件中的值(以resources.resource.xxxx形式调用)。程序运行后,当用户选择英文时,如下图所示:


  当用户选择中文提交时,程序运行如下图所示:


  而实际上,asp.net 2.0之所以能实现上面的功能,实际上是利用在工程下data目录下的一个叫aspnetdb的ACCESS数据库来记录的,打开其中的aspnet_profile表,就会发现其中记录着用户每次提交的信息。

  总结:

  在本文中,介绍了利用asp.net 2.0的profile功能,如何去实现本地语言个性化网页应用。Profile功能利用了数据库,记录用户每次提交的本地语言化信息,可以轻松进行读取,从而实现个性化网页。我们期待在visual studio 2005正式版中,profile功能能进一步加强。

上一页  1 2  

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
,ASP.net相关内容,ASP.net焦点新闻
  • 在ASP.NET中使用SQL的IN操作
  • ASP.NET设计网络硬盘之上传文件
  • ASP.NET设计网络硬盘之文件夹实现
  • ASP.NET+Web服务实现软件共享
  • ASP.NET中为DataGrid添加合计字段
  • FVD刺激高清碟机加速商业化 抢占商机最重要
  • 3家搜索引擎集体诉讼8848 吕春维未敢出席
  • 杨元庆:没有准备不会获批的备用方案
  • 军队信息化诞生新领域 电子军务呼之欲出
  • 世界经济论坛公布信息化程度全球最新排名
  • 2004政务绩效评估:政府门户尚处于发展阶段
  • 甲骨文出资5.15亿美元 意图收购RetekInc
  • 技术并购:帮你突破传统增长的“天花板”
  • ,ASP.netAdvertisement