亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ASP.NET 2.0中構造個性化網頁

2019-11-18 19:18:53
字體:
來源:轉載
供稿:網友
  在WEB應用中,我們經常要創建個性化的網頁。什么是個性化的網頁呢?舉個例子,大家經常使用熟悉的搜索引擎google,當我們設置了每次要使用的個性化語言偏好,比如使用中文后,在下次使用google時,則google會出現中文界面的頁面,十分方便。在asp.net 2.0中,我們可以使用PRofile功能,構造象上文提到的google那樣的個性化網頁。下面,我們舉個例子來說明,在該例子中,我們建立一個日歷,每次用戶可以選擇喜歡的語言(中文,英文)設置,當用戶選定了語言設置后,則下次用戶重新訪問該頁面時,則會出現對應語言顯示的頁面。

  首先,我們使用visual studio express beta 1,創建一個新的web站點,使用vb.net語言,接著往窗體添加如下控件,如下圖:


  其中分別添加如下控件:一個label標簽,一個日歷控件,一個dropdownlist控件,一個button控件,而對于dropdownlist控件的設置采用如下方式:

  ·Text Value 目的
  ·English En-US 用英文顯示網頁
  ·Chinese Zh-CN 用中文顯示網頁
  ·Auto Select Auto 根據IE瀏覽器中的語言設置自動選擇頁面顯示的語言

  接下來,我們可以開始設置資源文件了。由于我們的這個應用是一個多語言顯示的頁面,所以要分別設置對應的英語,中文資源文件。在visual studio 2005中,選擇工具菜單中的Generate Local Resource(產生資源文件),如下圖所示,


  當資源文件產生后,你會發現在解決方案管理器中,當前工程目錄下,有一個新的目錄文件夾,叫localresources。其中,default.aspx.resx這個資源文件,是default.aspx這個首頁文件要用到的資源文件(我們默認default.aspx是用英文顯示)。接下來,右鍵選定default.aspx.resx文件,在彈出的菜單中,選擇復制,然后再在localresources目錄下,選擇粘貼,這樣,就會復制一個新的資源文件,將其改名為:default.aspx.zh-CN.resx,這個將作為我們要用到的中文資源文件。

  接下來,我們對資源文件進行編輯。比如打開資源文件default.aspx.zh-CN.resx,這時會看到如下圖的資源文件,我們可以對其中的中文資源文件進行編輯。

  在asp.net 2.0中,只需要簡單在頁面aspx頭部的@page頁增加兩個新的屬性"Culture"和"UICultrue", 則WEB應用程序會自動在運行時,根據預先設定好的資源文件,自動顯示相應語言的頁面,如下面程序段所示:

<%@ Page Language="VB"
Culture="auto" UICulture="auto"
AutoEventWireup="false" CompileWith="Default.aspx.vb"
ClassName="Default_aspx" meta:resourcekey="PageResource1" %>

  為了測試程序,打開IE瀏覽器,將語言設置選定為中文,運行程序,則可以看到,程序自動調用了中文資源文件,顯示出來的頁面語言是中文,而不是默認的英文(因為我們默認的default.aspx是調用英文資源文件的),如下圖:


  上面的程序中,我們只是利用了資源文件的特性而已,下面,我們將實現讓程序"記住"用戶每次選擇語言,就象google那樣,記住用戶每次的選擇后,下次用戶在瀏覽頁面時,就會使用該語言的頁面了。
  首先,要實現這樣的功能,我們必須使用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功能能進一步加強。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产在线视频91| 国产视频精品在线| 亚洲天堂av在线免费| 久久久久久久国产精品| 久久久天堂国产精品女人| 欧美最猛性xxxxx免费| 国产精品福利无圣光在线一区| 国产视频精品一区二区三区| 日韩一区av在线| 午夜精品美女自拍福到在线| 欧美巨大黑人极品精男| 北条麻妃99精品青青久久| 国产日韩精品综合网站| 欧美成人免费va影院高清| 欧亚精品中文字幕| 黄色精品在线看| 精品偷拍各种wc美女嘘嘘| 国产精品久久久久久久久男| 亚洲人成伊人成综合网久久久| 海角国产乱辈乱精品视频| 91精品国产91久久久久久| 欧美午夜视频一区二区| 久久av在线看| 欧美性猛交xxxx黑人| 国产香蕉精品视频一区二区三区| 91日本在线观看| 成人精品视频99在线观看免费| 欧美激情综合色| 久久综合亚洲社区| 日本一区二区不卡| 按摩亚洲人久久| 久久国产精品久久久久久久久久| 欧美另类老女人| 91精品久久久久久综合乱菊| 欧美黑人性生活视频| 一道本无吗dⅴd在线播放一区| 久久精品国产2020观看福利| 欧美一级淫片播放口| 最近的2019中文字幕免费一页| 日韩欧美在线免费| 国产精品日韩在线观看| 7777kkkk成人观看| 国产精品永久在线| 91中文精品字幕在线视频| 热久久这里只有精品| 久久99热精品| 成人免费网站在线看| 亚洲日本aⅴ片在线观看香蕉| 成人激情av在线| 久久精品视频网站| 欧美国产日韩视频| 国产精品午夜国产小视频| 欧美激情欧美激情| 亚洲九九九在线观看| 国产一区二区三区在线观看网站| 欧美高清视频在线观看| 国产精品福利在线| 亚洲性无码av在线| 国产女人精品视频| 亚洲国产欧美日韩精品| 国产精品九九九| 韩国精品久久久999| 色无极亚洲影院| 国产在线视频欧美| 亚洲福利在线播放| 国产噜噜噜噜久久久久久久久| 亚洲午夜精品久久久久久性色| 97在线视频一区| 一夜七次郎国产精品亚洲| 国产在线播放不卡| 国产精品一香蕉国产线看观看| 国产一区二区三区三区在线观看| 免费99精品国产自在在线| 亚洲性猛交xxxxwww| 久热在线中文字幕色999舞| 91精品久久久久久久久中文字幕| 国产精品久久久久久久久免费| 亚洲色图18p| 亚洲欧美一区二区激情| 国产精品久久久久国产a级| 成人精品久久一区二区三区| 久久精品视频亚洲| 亚洲精品中文字幕av| 国产欧美日韩91| 国产成人午夜视频网址| 欧美成人中文字幕在线| 亚洲欧洲中文天堂| 美女视频久久黄| 国产日韩视频在线观看| 91九色在线视频| 2018国产精品视频| 国产精品美女视频网站| 国产精品激情自拍| 欧美成aaa人片免费看| 亚洲午夜av久久乱码| 秋霞成人午夜鲁丝一区二区三区| 国语自产精品视频在免费| 欧洲亚洲女同hd| 欧美激情视频网站| xxxxx91麻豆| 欧美日韩成人在线视频| 日韩欧美极品在线观看| 国产又爽又黄的激情精品视频| 亚洲免费伊人电影在线观看av| 欧美大片免费观看| 国产脚交av在线一区二区| 日韩第一页在线| 日韩大片免费观看视频播放| 国产午夜精品全部视频在线播放| 欧美日韩性生活视频| 色青青草原桃花久久综合| 午夜精品在线观看| 国产99久久久欧美黑人| 久久亚洲精品视频| 日韩一级裸体免费视频| 欧美激情高清视频| 欧美一级高清免费| 欧美大尺度在线观看| 精品久久久视频| 久久免费精品视频| 欧美孕妇毛茸茸xxxx| 欧美亚洲视频一区二区| 亚洲国产高清高潮精品美女| 性欧美xxxx交| 亚洲精品456在线播放狼人| 国产日韩欧美在线观看| 精品久久久久久久久久| 久久久久久91| 精品一区二区三区三区| 欧美激情精品久久久久久久变态| 日韩成人在线免费观看| 精品美女久久久久久免费| 日韩av在线看| 久久99精品视频一区97| 国产精品欧美日韩久久| 91国产精品视频在线| 一二美女精品欧洲| 欧美最近摘花xxxx摘花| 在线观看精品自拍私拍| 久久久久久久久久久久av| 在线日韩欧美视频| 欧美国产第二页| 97精品久久久| www国产亚洲精品久久网站| 欲色天天网综合久久| 国产精品久久久久久久9999| 久久久久久久国产精品视频| 亚洲欧美激情精品一区二区| 亚洲视频自拍偷拍| 亚洲综合成人婷婷小说| 国产精品久久久久久久久久小说| 国产亚洲精品久久| 亚洲天堂一区二区三区| 精品久久久久久亚洲精品| 久久久久久久久中文字幕| 欧美精品久久久久久久久久| www.xxxx欧美| 羞羞色国产精品| 日本亚洲精品在线观看| 久热99视频在线观看| 国产精品欧美亚洲777777| 黑人巨大精品欧美一区二区| 欧美成人亚洲成人日韩成人| 国产亚洲成av人片在线观看桃|