簡體   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