在主页面中有个button,响应函数对页面中英文进行转换,
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Page.IsPostBack = False Then
            Session("language") = 1 '中文
            InitDisplay()
        End If
End Sub
动作响应函数:
Private Sub ButtonEnglish_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonEnglish.Click
        Session("language") = 2 '英文
        InitDisplay1()
End Sub其中的web用户控件,
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        InitDisplay2()
End Sub
页面文字显示函数如下
Private Sub InitDisplay2()
        If Session("language") = 1 Then
            LabelHead.Text = "中文"
        ElseIf Session("language") = 2 Then
            LabelHead.Text = "english version"
        End If
End Sub
发现,点击button后,执行的顺序是主页面的page_load->web用户控件的page_load->主页面的ButtonEnglish_Click
这样,web用户控件调用InitDisplay()时仍然是Session("language") = 1。
如何解决?谢谢

解决方案 »

  1.   

    其中的web用户控件,
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            If Page.IsPostBack = False Then
                  InitDisplay2()
            End If
      

  2.   

    你可以不在page_load的时候设置Session,你可以在InitDisplay方法中判断Session("language")是否为空,如果为空默认为中文,如果不为空则以Session中的值为准
      

  3.   

    可以把web control的InitDisplay2()方法设置为public的
    然后在ButtonEnglish_Click中调用InitDisplay2(languageId)
      

  4.   

    icyer() :
    如何在ButtonEnglish_Click中调用InitDisplay2(languageId)
    主页面中拖拉web用户控件过来的ID是head1
    在后台代码中应该如何写?
    谢谢
      

  5.   

    试试这个:
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            If Page not IsPostBack Then
                Session("language") = 1 '中文
                InitDisplay()
            End If
    End Sub动作响应函数:
    Private Sub ButtonEnglish_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonEnglish.Click
            Session("language") = 2 '英文
            InitDisplay1()
    End Sub其中的web用户控件,
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            InitDisplay2()
    End Sub
    页面文字显示函数如下
    Private Sub InitDisplay2()
            If Session("language") = 1 Then
                LabelHead.Text = "中文"
            Else
                LabelHead.Text = "english version"
            End If
    End Sub