2017-04-20 28 views
0

我試圖在我的vb.net頁面觸發導致.NET會話變量更新的「doPostBack」事件時更新JavaScript變量。在.NET doPostBack觸發後更新javascript變量

我試着添加這個,但它不起作用。

<script> 

    var mySessionVariable = '<%= Session("monsterID")%>'; 

    addToPostBack = function (func) { 
     var old__doPostBack = __doPostBack; 
     if (typeof __doPostBack != 'function') { 
      __doPostBack = func; 
     } else { 
      __doPostBack = function (t, a) { 
       if (func(t, a)) old__doPostBack(t, a); 
      } 
     } 
    }; 

    $(document).ready(function() { 

     addToPostBack(function (t, a) { 
      mySessionVariable = '<%= Session("monsterID")%>'; 
     }); 

     console.log("mySessionVariable: ", mySessionVariable); 
    }); 

</script> 

即使燒製,做了「doPostBack」事件後的vb.net方的會話變量的變化,它之前和在客戶端側回發後保持不變。

MonsterVar1 
MonsterVar1 

有沒有辦法讓這個工作?

謝謝!

回答

1

豈不更有意義,有一個隱藏字段,而不是從會議抓住的東西,使之與JS的頁面上工作:

<asp:HiddenField id="HiddenField1" runat=Server /> 

JS

//document.getElementById('<%= HiddenField1.ClientID%>'); 

var value = document.getElementById("<%= Hiddenfield1.ClientID %>").value 
+0

這樣不是需要一個表單?我只是使用更新面板。謝謝! – SkyeBoniwell

+0

據我記得你需要一個表格來使用更新面板,但當然有一些新的變化,它可能不需要它,但從MS需要它 – Dalorzo

+0

是的,我認爲你是對的...我只是'查看源代碼「,我看到一個id爲'aspnetForm'的表單。所以.net必須在幕後添加它。 – SkyeBoniwell