Ошибка изменения управляющих элементов в VB.net - PullRequest
1 голос
/ 31 марта 2011

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

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

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

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

На этом этапе он взрывается, выдавая следующую ошибку:

«Коллекция Controls не может быть изменена, поскольку элемент управления содержит блоки кода (т. Е. <% ...%>).»

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

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Или,

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

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

starttimePlaceholder.Controls.Add(New LiteralControl(Session("StartTime")))
0 голосов
/ 31 марта 2011

Я нашел решение, которое сработало

Я заставил свой скрипт работать на серверном элементе управления.

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...