在一个页面asp.net的页面中使用了自定义控件登录数据库,然后设置session,想在该页面的load事件中取得该session的值,但总是空的.如果该页面中编写了按钮的单击事件,进行单击操作则可以访问该session或者刷新页面也行!
    请各位高手,指导指导,最好来一个完整的例子,谢谢,

解决方案 »

  1.   

    if (HttpContext.Current.Session["Id"]==null)
    {}
      

  2.   

    我的控件文件mycon1.ascx
    <script language="vb" runat="server">
    sub btn1_click(s as object,e as eventargs)
      Session("id") = Trim(TextBox1.Text)
    end sub
    sub btn2_click(s as object,e as eventargs)
            Session("id") = ""
            TextBox1.Text = ""
    end sub
    </script>
    <asp:button id="btn1" runat="server"  onclick="btn1_click" text="设置"></asp:button>&nbsp;
    <asp:TextBox id="TextBox1" runat="server"></asp:TextBox>&nbsp;
    <asp:Button id="btn2" runat="server" onclick="btn2_click"  Text="清空"></asp:Button> 
    网页文件是
    <script language="vb" runat="server">
    sub page_load(s as object,e as eventargs)
       Label1.Text = Session("id")
    end sub</script><%@ register tagprefix="myCtrol" tagname="log" src="mycon1.ascx" %>
    <HTML>
    <HEAD>
    <TITLE>myForm1</TITLE>
    </HEAD>
    <BODY>
    <form runat="server">
    <myctrol:log id="mylog" runat="server" valign="top"></myctrol:log>
    <br>
    <br>
    <br>
    以下是网页控件
    <asp:Label id="Label1" Runat="server">Label</asp:Label></form>
    </BODY>
    </HTML>按照上面说还是不行,能把这个完整的例子,请各位大侠再帮帮修改一下好吗!
      

  3.   

    自定义控件:
    <script language="vb" runat="server">
    Sub btn1_click(ByVal s As Object, ByVal e As EventArgs)
    System.Web.HttpContext.Current.Session("id") = Trim(TextBox1.Text)
    End Sub
    Sub btn2_click(ByVal s As Object, ByVal e As EventArgs)
    System.Web.HttpContext.Current.Session("id") = ""
    TextBox1.Text = ""
    End Sub
    </script>
    <asp:button id="btn1" runat="server" onclick="btn1_click" text="设置"></asp:button>&nbsp;
    <asp:TextBox id="TextBox1" runat="server"></asp:TextBox>&nbsp;
    <asp:Button id="btn2" runat="server" onclick="btn2_click" Text="清空"></asp:Button>  网页文件:<script language="vb" runat="server">
    Private Sub page_load(ByVal s As Object, ByVal e As EventArgs)
    Label1.Text = Session("id")
    End Sub
    </script><%@ register tagprefix="myCtrol" tagname="log" src="mycon1.ascx" %>
    <HTML>
    <HEAD>
    <TITLE>myForm1</TITLE>
    </HEAD>
    <BODY>
    <form id="Form1" runat="server">
    <myctrol:log id="mylog" runat="server" valign="top"></myctrol:log>
    <br>
    <br>
    <br>
    以下是网页控件
    <asp:Label id="Label1" Runat="server">Label</asp:Label></form>
    </BODY>
    </HTML>
      

  4.   

    (雪尘) 我运行了还不行,按钮还是需要单击两次才能再看标题上显示session!!
    大家在想象还有没有来实现!!
      

  5.   

    你要在自定义控件中刷新主页面,可以为这个控件添加一个事件,这样在Session改变时触发这个事件,然后在主页面中写响应这个事件的代码。以下代码实现了你所说的功能:
    <script language="vb" runat="server">
    Public Event SessionChange()

    Sub btn1_click(ByVal s As Object, ByVal e As EventArgs)
    System.Web.HttpContext.Current.Session("id") = Trim(TextBox1.Text)
    RaiseEvent SessionChange()
    End Sub
    Sub btn2_click(ByVal s As Object, ByVal e As EventArgs)
    System.Web.HttpContext.Current.Session("id") = ""
    TextBox1.Text = ""
    RaiseEvent SessionChange()
    End Sub
    </script>
    <asp:button id="btn1" runat="server" onclick="btn1_click" text="设置"></asp:button>&nbsp;
    <asp:TextBox id="TextBox1" runat="server"></asp:TextBox>&nbsp;
    <asp:Button id="btn2" runat="server" onclick="btn2_click" Text="清空"></asp:Button> <script language="vb" runat="server">
    Private Sub Page_Load(ByVal s As Object, ByVal e As EventArgs)
    If Not IsPostBack Then
    Label1.Text = Session("id")
    End If
    End Sub
    Private Sub mylog_OnSessionChange()
    Label1.Text = Session("id")
    End Sub
    </script><%@ register tagprefix="myCtrol" tagname="log" src="mycon1.ascx" %>
    <HTML>
    <HEAD>
    <TITLE>myForm1</TITLE>
    </HEAD>
    <BODY>
    <form id="Form1" runat="server">
    <myctrol:log id="mylog" runat="server" valign="top" OnSessionChange="mylog_OnSessionChange" ></myctrol:log>
    <br>
    <br>
    <br>
    以下是网页控件
    <asp:Label id="Label1" Runat="server">Label</asp:Label></form>
    </BODY>
    </HTML>