修改VB.net中的控件集合错误

时间:2011-03-31 09:39:58

标签: javascript asp.net vb.net controls

我需要在页面加载上执行一个函数,该函数使用存储的会话变量。我已将以下内容添加到我的<body>代码中。

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

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

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

在此阶段爆炸,发出以下错误:

  

“控件集合不能   修改,因为控件包含   代码块(即&lt;%...%&gt;)。 “

我尝试过使用<%# ... %>代替<%= .. .%>的建议,但这会阻止找到会话变量 - 它是只是空白。

2 个答案:

答案 0 :(得分:1)

或者,

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

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

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

答案 1 :(得分:0)

我找到了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>