繁体   English   中英

在ASP .NET C#中更改文本框输入后重置会话

[英]Reset session upon textbox input change in asp .net c#

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

尝试这个:

在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();
    }

因此,您将需要一个事件处理程序,该事件处理程序在帐户号更改时(或在用户文本输入更改时)触发,然后根据此帖子,您将需要使用Session.Clear() ,该操作从中删除所有值对象或Session.Abondon() ,它将破坏会话并触发Session_OnEnd事件 无论使用哪种方式,都取决于您要完成什么。

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

使用TextBox TextChanged事件并使用Session.Abandon()Session.Clear()方法销毁会话。
如果您在此处写下代码,那么我们可以为您提供准确的答案

尝试这个

  <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
    }

有两种方法可以完成您要问的事情。

选项一:

您可以在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
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM