[英]Load content page after master control event is raised
我在asp.Net
有一個母版頁,而某些內容頁是該母版頁的子級。 在母版頁中,我有一個Drop Down
控件:
<asp:DropDownList ID="languageSelect" runat="server" AutoPostBack="True" OnSelectedIndexChanged="seletedLanguageChanged">
<asp:ListItem Value="English">English</asp:ListItem>
<asp:ListItem Value="French">French</asp:ListItem>
</asp:DropDownList>
並在母版頁代碼后面:
public void seletedLanguageChanged(object sender, EventArgs e)
{
Session.Add(Settings.LanguageParameters.LanguageParams, languageSelect.SelectedValue);
}
現在在主頁中,我正在檢查下拉值,並基於該值渲染頁面:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session.Add(Settings.LanguageParameters.LanguageParams, "English");
}
string language = Session["LanguageParams"].ToString();
if (language == "English")
{
englishTable.Style.Add("display", "normal");
frenchTable.Style.Add("display", "none");
}
else
{
frenchTable.Style.Add("display", "normal");
englishTable.Style.Add("display", "none");
}
}
問題是,當我更改下拉選擇(例如,從“英語”更改為“法語”)時,將在觸發seletedLanguageChanged
之前執行Home Page_Load
方法,這將導致主頁執行if (language == "English")
部分,然后seletedLanguageChanged
。
如何在seletedLanguageChanged
之前阻止Home Page_Load
方法執行?
謝謝:)
你不能 您可以做的是將邏輯移至OnPreRender
事件,該事件確實在Page_Load之后和控件事件之后發生(例如OnSelectedIndexChanged
)。 因此,清理您的Page_Load
並改用它:
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (!IsPostBack)
{
Session.Add(Settings.LanguageParameters.LanguageParams, "English");
}
string language = Session["LanguageParams"].ToString();
if (language == "English")
{
englishTable.Style.Add("display", "normal");
frenchTable.Style.Add("display", "none");
}
else
{
frenchTable.Style.Add("display", "normal");
englishTable.Style.Add("display", "none");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.