我有一个下拉的asp:listitem框,看起来非常干净。它的功能类似于第一次更改该页面上的语言(Say,English to Swedish)时,确实将文本更改为该语言。
第二次您尝试更改语言(瑞典语返回英语 - 或任何语言),它只是重新加载页面然后您必须选择英语第二次< / em>实际上将页面更改回英语。
我尝试从后面的代码中删除行,一次一个,但没有改变它。如果有可能说出原因,那么任何帮助都会得到真正的赞赏!
我的.aspx页面是这样的:
<asp:DropDownList ID="ddlCulture" DataTextField="DisplayName"
DataValueField="Name" runat="server" BackColor="#DDE4EC" ForeColor="#465C71"
Width="130px" AutoPostBack="True">
<asp:ListItem Selected="True" meta:resourcekey="MenuItemResourcelangen9">Select
Language</asp:ListItem>
<asp:ListItem Value="en" meta:resourcekey="MenuItemResourcelangen1"></asp:ListItem>
<asp:ListItem Value="es-MX" meta:resourcekey="MenuItemResourcelangen2">
</asp:ListItem>
<asp:ListItem Value="fr" meta:resourcekey="MenuItemResourcelangen3"></asp:ListItem>
<asp:ListItem Value="de" meta:resourcekey="MenuItemResourcelangen4"></asp:ListItem>
<asp:ListItem Value="sv" meta:resourcekey="MenuItemResourcelangen5"></asp:ListItem>
<asp:ListItem Value="ja" meta:resourcekey="MenuItemResourcelangen6"></asp:ListItem>
<asp:ListItem Value="nl" meta:resourcekey="MenuItemResourcelangen7"></asp:ListItem>
<asp:ListItem Value="ru" meta:resourcekey="MenuItemResourcelangen8"></asp:ListItem>
</asp:DropDownList>
我的代码背后是这样的:
Partial Public Class Site
Inherits System.Web.UI.MasterPage
Private Property UICulture As String
Protected Sub InitializeCulture()
If Session("culture") IsNot Nothing Then
UICulture = Session("culture").ToString()
End If
End Sub
Protected Sub ddlCulture_SelectedIndexChanged(sender As Object, e As System.EventArgs)
Handles ddlCulture.SelectedIndexChanged
Session("uiculture") = ddlCulture.SelectedValue
Session("culture") = ddlCulture.SelectedValue
Server.Transfer(Request.Path)
End Sub
End Class
答案 0 :(得分:1)
我建议您使用Request
对象来获取InitializeCulture
重载中的选定文化,而不是处理选定的索引更改事件。例如,
Protected Sub InitializeCulture()
Dim selectedLanguage As String = Request.Form(ddlCulture.UniqueID)
IF selectedLanguage IsNot Nothing Then
Me.Culture = Me.UICulture = selectedLanguage
Thread.CurrentThread.CurrentCulture = _
CultureInfo.CreateSpecificCulture(selectedLanguage)
Thread.CurrentThread.CurrentUICulture = New _
CultureInfo(selectedLanguage)
End If
MyBase.InitializeCulture()
End Sub
答案 1 :(得分:1)
在Control的事件(SelectedIndexChanged)之前调用InitializeCulture。
如果您使用Response.Redirect(Request.RawUrl),更改的会话设置将应用于InitializeCulture,并且页面可以刷新(F5)而不会再次“发布”?浏览器中显示消息。