0

我在页面中有会话,并希望在用户文本输入更改时重置此会话。例如:帐号xxx会有一个会话,一旦帐号更改为yyy我想重置会话。我没有登录到此页面,因此无法在注销时转储会话。帮助表示赞赏。先感谢您。

4

6 回答 6

2

试试这个:

在 aspx 中:

    <asp:TextBox ID="TextBox1" runat="server" ontextchanged="TextBox1_TextChanged"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" Text="Button" />

在后面的代码中:

    protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        Session.Clear();
    }
于 2013-07-03T12:49:32.373 回答
1

因此,您需要一个在帐号更改(或用户文本输入更改)时触发的事件处理程序,然后根据这篇文章,您需要使用Session.Clear()which只是从对象中删除所有值Session.Abondon(),或者使用which 将销毁会话并触发 Session_OnEnd 事件。无论您使用哪种方式,都取决于您想要完成的任务。

于 2013-07-03T12:41:49.297 回答
1

对文本框的“onkeyup”事件进行ajax调用并在该会话中设置新值,您将获得文本框的新值并可以在会话中设置它。

于 2013-07-03T12:43:10.473 回答
1

使用TextChangedevent of并使用or方法TextBox销毁会话这将对您有所帮助 如果您在这里写下代码,那么我们可以给您确切的答案Session.Abandon()Session.Clear()

于 2013-07-03T12:47:44.367 回答
0

试试这个

  <asp:TextBox ID="TextBox1" runat="server" ontextchanged="TextBox1_TextChanged"></asp:TextBox>

后面的代码

protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        Session["your_sesion_name"]=TextBox1.Text;//or what ever you want to update value
    }
于 2013-07-03T12:55:12.503 回答
0

有几种方法可以满足您的要求。

选项一:

您可以使用文本框 ontextchanged 事件

<asp:TextBox ID="TextBox1" runat="server" ontextchanged="TextBox1_TextChanged" AutoPostBack="true"></asp:TextBox>

在后面的代码中:

 protected void TextBox1_TextChanged(object sender, EventArgs e)
 {
        Session.Clear();
 }

这里的坑是只有在文本框失去焦点时才会触发 OnTextChanged 事件。

选项 2: 使用 JavaScript 捕获 onkeyup 事件并进行 ajax 回调到服务器以更新您的会话信息

这里的坑是每次用户在文本框中输入一个字符时,您都会进行 ajax 调用。尽管您可以添加检查,以便仅在帐号为一定长度时才进行呼叫。

选项 3: 您可以在表单中添加一个按钮,供用户在输入帐号后单击。这将避免像选项 2 中那样在每次按键时不必要地调用服务器。然后在您的按钮单击事件中,您可以使用会话完成工作

 <asp:TextBox ID="TextBox1" runat="server"  />
 <asp:Button ID="btnSubmit" runat="server" onclick="btnSubmit_Click" Text="Submit" />

背后的代码

 protected void btnSubmit_Click(object sender, EventArgs e)
 {
     // do session work
 }
于 2013-07-03T13:02:57.707 回答