【问题标题】:Modifying controls collection error in VB.net在 VB.net 中修改控件集合错误
【发布时间】:2011-03-31 09:39:58
【问题描述】:

我需要在页面加载时执行一个函数,该函数使用存储的会话变量。我在<body> 标签中添加了以下内容。

<body onload="doSomething(event,'<%= Session("StartTime") %>')>

这确实有效。但是,当我尝试将控件添加到控件集合时,它会在其他地方引起问题:

dim myPanel= New Panel
...
Me.Controls.Add(myPanel)

它在这个阶段爆炸,给出以下错误:

"Controls 集合不能 修改,因为控件包含 代码块(即 )。 "

我尝试过使用&lt;%#...%&gt; 而不是&lt;%=...%&gt; 的建议,但这会阻止会话变量被发现——它只是空白。

【问题讨论】:

    标签: javascript asp.net vb.net controls


    【解决方案1】:

    或者,

    <body onload="doSomething(event,'<asp:PlaceHolder id="starttimePlaceholder" runat="server"</asp:Placeholder>')>
    

    然后,在服务器端填充它:

    starttimePlaceholder.Controls.Add(New LiteralControl(Session("StartTime")))
    

    【讨论】:

      【解决方案2】:

      我找到a solution that worked

      我强制我的脚本在服务器控件上运行。

      <body ms_positioning="GridLayout" onload="callFromDiv(event);">
      
               <div runat="server" ID="serverDiv">
                  <script type="text/javascript">
                        //This function must be placed in a separate div, since placing it directly 
                        //in body tag prevents new controls being added later
                        function callFromDiv(e){
                            doSomething(e,'<%= Session("StartTime") %>')
                        }  
                  </script>
              </div>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-24
        • 1970-01-01
        • 2012-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-12
        • 1970-01-01
        相关资源
        最近更新 更多