【问题标题】:updating javascript variable after .NET doPostBack fires.NET doPostBack 触发后更新 javascript 变量
【发布时间】:2017-04-20 20:05:28
【问题描述】:

每当我的 vb.net 页面触发“doPostBack”事件时,我都会尝试更新 javascript 变量,该事件会导致 .net 会话变量更新。

我尝试添加它,但它不起作用。

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

即使 Session 变量在触发执行“doPostBack”的事件后在 vb.net 端发生变化,它在客户端回发之前和之后都保持不变。

MonsterVar1
MonsterVar1

有没有办法让它工作?

谢谢!

【问题讨论】:

    标签: javascript asp.net vb.net


    【解决方案1】:

    拥有一个隐藏字段而不是从会话中抓取一些东西以使其与页面上的 JS 一起工作不会更有意义:

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

    JS

    //document.getElementById('<%= HiddenField1.ClientID%>');
    
    var value = document.getElementById("<%= Hiddenfield1.ClientID %>").value
    

    【讨论】:

    • 那不需要表格吗?我只是在使用更新面板。谢谢!
    • 据我记得你需要一个表格来使用更新面板,但当然有一些新的变体可能不需要它,但 MS 的那个需要它
    • 是的,我认为你是对的...我只是“查看了源代码”,然后看到了一个 ID 为“aspnetForm”的表单。所以 .net 必须在幕后添加它。
    • 但是,我仍然需要 javascript 来读取变量,我看不出即使使用隐藏字段我也能做到这一点。
    • '&lt;%= HiddenField1.ClientID%&gt;' 为您提供隐藏字段
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 2020-10-18
    • 2021-12-06
    相关资源
    最近更新 更多