假設網站中所要執行多國語言的網頁,有套用「主版頁面」的話,打開網站中的Default.aspx,將設計視窗中的文字敘述[歡迎使用 ASP.NET!],改為使用Label控制項取代,並將原本的文字敘述刪除。
<asp:Label ID="LabelMessage" runat="server" Text="<%$ Resources:MessageResource, Welcome %>" />
接著在網站中預設的Default.aspx中來設計可以讓使用者自行挑選的多國語言網頁設計,其設計步驟如下:
Step 1: 在Default.aspx中加入DropDownList控制項:
<asp:DropDownList ID="ddlLanguage" runat="server" AutoPostBack="True" ClientIDMode="Static">
<asp:ListItem Value="zh-TW">中文</asp:ListItem>
<asp:ListItem Value="en-US">英文</asp:ListItem>
<asp:ListItem Value="ja-JP">日文</asp:ListItem>
</asp:DropDownList>
Step 2: 開啟Default.aspx.vb,改寫InitializeCulture方法,將DropDownList控制項所挑選的值,設定給Page物件的UICulture屬性。
Step 3: 但是因為DropDownList控制項是位在主版頁面的網頁中,因此其所產生之HTML控制項的名稱將會有所異動,那麼就必須要修改Request.Form所要接收的控制項名稱。程式碼如下:
Partial Class _Default
Inherits System.Web.UI.Page
Protected Overrides Sub InitializeCulture()
If Request.Form("ctl00$MainContent$ddlLanguage") IsNot Nothing Then
Dim selectedLanguage As String = _
Request.Form("ctl00$MainContent$ddlLanguage")
Page.UICulture = selectedLanguage
End If
End Sub
End Class
Step 4: 瀏覽Default.aspx,並挑選不同的語系,檢視網頁的執行結果。
Step 5: 當挑選為英文時:
Step 6: 當挑選為日文時:
Step 7: 最後,若是ddlLanguage 這個DropDownList控制項是放置在主版頁面Site.master中的話,那麼在主版頁面中改寫InitializeCulture 方法,其Request.Form所接收的參數值,就可以直接使用ddlLanguage這個ID了。
<script runat="server">
Protected Overrides Sub InitializeCulture()
If Request.Form("ddlLanguage") IsNot Nothing Then
Page.UICulture = Request.Form("ddlLanguage")
End If
End Sub
</script>
1 則留言:
您好,想請問一下,我主板頁面中如果程式碼出現InitializeCulture就會出現錯誤,會叫我把Overrides刪掉,之後發現是因為Inherits不是Page而是MasterPage
張貼留言