私のドロップダウンリストにはen-NZ、en-USなどの形式の値を持つ言語のリストがありますが、そのページはポストバック時に言語を変更しません。誰かが自分のコードを見て、自分のページの言語を変更するのに間違っていることを教えてくださいポストバックで言語が変更されないのはなぜですか?
そして、私のlbllanguage.Textが2番目のポストバックに変わるので、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;
}
}
私の本当の問題で現時点ではページの言語を変更しようとしています。ポストバック時にProfiles Preferencesプロパティを自動的に選択するには、Page_PreRenderイベントが必要です。ページの言語を変更するための変更はありません。page_loadの – ONYX
は、HttpContext.Current.Profileが予期したものを保持していますか? – ivowiblo
これは、Pre_RenderでddlChangeLanguage.SelectedValueを選択しているためです。 – ONYX