2011-03-31 3 views
1

Мне нужна функция, которая будет выполняться при загрузке страницы, которая использует хранимую переменную сеанса. Я добавил следующее к тегу <body>.Изменение ошибки коллекции управления в VB.net

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

Это действительно работает. Тем не менее, это вызывает проблему в другом месте, когда я пытаюсь добавить элемент управления в моей коллекции элементов управления:

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

It бомбы на данном этапе, дает следующее сообщение об ошибке:

"The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>). "

Я попробовал использовать <%# ... %> вместо <%= .. .%>, но это предотвращает обнаружение переменной сеанса - она ​​просто пустая.

ответ

1

Или

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

Затем на стороне сервера, чтобы заполнить ее:

starttimePlaceholder.Controls.Add(New LiteralControl(Session("StartTime"))) 
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> 
Смежные вопросы