2017-04-20 58 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