2015-11-03 55 views
0

我一直在努力了一段時間,我有一個Javascript/C#的問題。我一直在嘗試從Javascript設置一個Session變量。我以前嘗試使用頁面方法,但它導致我的JavaScript崩潰。在JavaScript中分配文本框的值,並在C中設置值的會話#

在JavaScript:

PageMethods.SetSession(id_Txt, onSuccess); 

,而這個頁面的方法:

[System.Web.Services.WebMethod(true)] 
public static string SetSession(string value) 
{ 
    Page aPage = new Page(); 
    aPage.Session["id"] = value; 
    return value; 
} 

我沒有任何這方面的成功。因此,我試圖從我的javascript中設置文本框的值,並在我的c#中放置一個OnTextChanged事件來設置會話變量,但事件未被觸發。

在JavaScript:

document.getElementById('spanID').value = id_Txt; 

在HTML:

<asp:TextBox type="text" id="spanID" AutoPostBack="true" runat="server" 
ClientIDMode="Static" OnTextChanged="spanID_TextChanged" 
style="visibility:hidden;"></asp:TextBox> 

在CS:

protected void spanID_TextChanged(object sender, EventArgs e) 
    { 
     int projectID = Int32.Parse(dropdownProjects.SelectedValue); 
     Session["id"] = projetID; 
    } 

有沒有人有一個想法,爲什麼沒有我的事件,其中的解僱?你有可以嘗試的替代解決方案嗎?

+1

內的靜'WebMethod',使用'HttpContext.Current.Session [ 「ID」] =值;' – mshsayem

+1

一個常見的劈:將一個隱藏的asp按鈕( 'display:none')和一個隱藏字段。隱藏按鈕的「OnClientClick」,設置隱藏字段。在「OnClick」處理程序(cs)中,從隱藏字段中讀取值。調用js'$(「#buttonId」)。click()'來觸發事件。 – mshsayem

回答

1

我發現這個問題,我沒有enableSession = true,我不得不使用HttpContext.Current.Session["id"] = value,就像mshsayem聲明的那樣。現在我的事件被正確觸發並設置了會話變量。

1

首先,確保你的sessionState啓用(web.config中):

<sessionState mode="InProc" timeout="10"/> 

其次,確定您已經激活頁面的方法:

<asp:ScriptManager ID="sc1" runat="server" EnablePageMethods="True"> 
</asp:ScriptManager> 

第三,這樣的設置會話值(如該方法是一個靜態):

HttpContext.Current.Session["my_sessionValue"] = value; 

樣品的aspx:

<head> 
    <script type="text/javascript"> 
     function setSessionValue() { 
      PageMethods.SetSession("boss"); 
     } 
    </script> 
</head> 
<asp:ScriptManager ID="sc1" runat="server" EnablePageMethods="True"> 
</asp:ScriptManager> 

<asp:Button ID="btnSetSession" Text="Set Session Value (js)" runat="server" OnClientClick="setSessionValue();" /> 
<asp:Button ID="btnGetSession" Text="Get Session Value" runat="server" OnClick="ShowSessionValue" /> 
<br/> 
<asp:Label ID="lblSessionText" runat="server" /> 

樣品後面的代碼:

[System.Web.Services.WebMethod(true)] 
public static string SetSession(string value) 
{ 
    HttpContext.Current.Session["my_sessionValue"] = value; 
    return value; 
} 

protected void ShowSessionValue(object sender, EventArgs e) 
{ 
    lblSessionText.Text = Session["my_sessionValue"] as string; 
} 
相關問題