如何在IsPostBack中执行子页面代码之前在母版页中运行方法?

时间:2013-08-14 07:31:27

标签: c# asp.net master-pages

我在母版页面上有两个按钮,用于阿拉伯语和英语 当我点击其中一个按钮时,会话[“Lang”]将会改变。

现在在chiled页面我写这个

 protected void Page_Load(object sender, EventArgs e)
{

    if (Session["Lang"] == "en-US")
    {
        Label1.Text = "English";
    }
    else
    {
        Label1.Text = "Arabic";
    }

当我点击按钮更改会话时,子代码将首先执行,然后将转到母版页并运行一个butn事件来更改会话

任何人都有想法在子页面之前调用按钮事件

先谢谢

Mohammmed ^ _ ^

3 个答案:

答案 0 :(得分:1)

您需要查看ASP.NET Webforms页面生命周期,以了解何时会发生什么。

以下是一些有关该问题的文档:http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx#lifecycle_events

目前您遇到的问题是按钮点击事件发生在Page_Load事件之后,因此当您点击按钮时,您可能会遇到Label1.Text只需点击一次"背后&# 34 ;.

查看文档并将Label1.Text作业放在PreRender中。

就像@ArabicProgrammer所回答的那样,最好还是实际使用.NET Framework中提供的Culture支持。如果您使用该方法,则可以使用类似的方式显示语言。

<%= System.Threading.Thread.CurrentThread.CurrentCulture.DisplayName %>

而不是使用Label控件。

答案 1 :(得分:1)

在页面加载之前执行InitializeCulture,您应该使用它来更改页面的文化,并在执行后重定向到默认页面中的母版页。

您可以使用此

 protected override void InitializeCulture()
    {
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Session["Lang"].ToString());
        Thread.CurrentThread.CurrentUICulture = new CultureInfo(Session["Lang"].ToString());
        base.InitializeCulture();
    }

答案 2 :(得分:0)

我使用这种方法

 protected override void InitializeCulture()
{
}

在这个方法中我得到了事件Target(按钮的ID)这个

      protected override void InitializeCulture()
{
     string language = Request["__EventTarget"];
 if (!string.IsNullOrEmpty(language))
        {
            if (language.EndsWith("Ar"))
            {
                languageId = "ar-SA";
            }
            else if (language.EndsWith("En"))
            {
                languageId = "en-US";
            }
       }

所以会话将改变frist然后将加载页面然后加载母版页。

相关问题