В моем выпадающем списке есть список языков со значениями в форме en-NZ, en-US и т. Д., Но страница не меняет язык при обратной передаче, если мои языковые коды неверны.Может ли кто-нибудь взглянуть на мой код и сказать, что я делаю неправильно, чтобы изменить язык для моей страницы
И мой lbllanguage.Text также изменяется на втором постбэке, поэтому предполагается изменить его на событие ChangeLanguage_Clickпри первом нажатии
Главная страница:
protected void Page_PreRender(object sender, EventArgs e)
{
string Culture = (HttpContext.Current.Profile as ProfileCommon).Preferences.Culture;
if (ddlChangeLanguage.Items.FindByValue(Culture) != null)
{
ddlChangeLanguage.SelectedValue = (HttpContext.Current.Profile as ProfileCommon).Preferences.Culture;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
List<CultureInfo> languages = CultureInfo.GetCultures(CultureTypes.SpecificCultures).OrderBy(x => x.Name).ToList();
SortedDictionary<string, string> sortedLanguages = new SortedDictionary<string, string>();
foreach (CultureInfo language in languages)
{
RegionInfo regionInfo = new RegionInfo(language.Name);
if (!sortedLanguages.ContainsKey(regionInfo.EnglishName))
{
sortedLanguages.Add(regionInfo.EnglishName, language.Name);
}
}
foreach (KeyValuePair<string, string> language in sortedLanguages)
{
ddlChangeLanguage.Items.Add(new ListItem { Value = language.Value, Text = language.Key });
}
ddlChangeLanguage.SelectedValue = (HttpContext.Current.Profile as ProfileCommon).Preferences.Culture;
}
lbllanguage.Text = this.UICulture;
}
protected void ChangeLanguage_Click(object sender, EventArgs e)
{
(HttpContext.Current.Profile as ProfileCommon).Preferences.Culture = ddlChangeLanguage.SelectedValue;
}
и моя базовая страница, которую наследует моя главная страница
public class BasePage : System.Web.UI.Page
{
public BasePage()
{
}
protected override void InitializeCulture()
{
this.Culture = (HttpContext.Current.Profile as ProfileCommon).Preferences.Culture;
this.UICulture = (HttpContext.Current.Profile as ProfileCommon).Preferences.Culture;
}
}