VB.NET Программно добавить код между тегами - PullRequest
0 голосов
/ 22 декабря 2009

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

<mytag:CustomControl runat="server">
    html (or other text) goes here
</mytag:CustomControl>

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

Dim myControl As myClass.CustomControl = New myClass.CustomControl
myControl.ID = "someID"
myControl.?????? = "html (or other text) goes here"
Me.Controls.Add(myControl)

При добавлении элемента управления на страницу динамически, как мне добавить информацию, которая обычно была бы между начальным и конечным тегами, если элемент управления был добавлен обычным, не динамическим способом?

Спасибо

Вот фактический контроль:

Protected Overloads Overrides Sub Render(ByVal writer As HtmlTextWriter)
    Dim scriptmanagerPage As ScriptManager = ScriptManager.GetCurrent(Page)
    If scriptmanagerPage Is Nothing Then
        'Do nothing
    Else
        'See if we are in a postback
        If scriptmanagerPage.IsInAsyncPostBack Then
            'We are in a postback; register the script
            Dim stringbuilderWorking As New StringBuilder()
            MyBase.Render(New HtmlTextWriter(New StringWriter(stringbuilderWorking)))
            Dim stringScript As String = stringbuilderWorking.ToString()
            ScriptManager.RegisterStartupScript(Me, GetType(ScanWorkXAJAX), UniqueID, stringScript, False)
        Else
            'Not in a postback
            MyBase.Render(writer)
        End If 'In an async postback
    End If 'Scriptmanager present

End Sub

Ответы [ 4 ]

3 голосов
/ 22 декабря 2009

Что вы подразумеваете под данными? Больше элементов управления?

Вы можете использовать

  myControl.Controls.Add(childControlHere);

РЕДАКТИРОВАТЬ После выяснения вопроса:

Добавить буквальный контроль. т.е. * +1008 *

myControl.Controls.Add(new LiteralControl("<b>hello world</b><script type='text/javascript'>alert('hi');</script>"));  
0 голосов
/ 23 декабря 2009

Был в состоянии выполнить это с помощью буквального управления.

Код выше плюс:

Dim myLiteral As LiteralControl = New LiteralControl
myLiteral.ID = "myLiteral"
myLiteral.Text = "html (or some other text) goes here"
myControl.Controls.Add(myLiteral)
0 голосов
/ 22 декабря 2009

Это зависит от свойств используемого вами пользовательского элемента управления. Возможно, вам придется привязать к отображаемому шаблону, чтобы события запускались, это действительно зависит только от вашего конкретного элемента управления.

0 голосов
/ 22 декабря 2009

Вы имеете в виду ПОИСК и добавление данных к элементам управления внутри динамического элемента управления?

Вы можете использовать метод WebControl.FindControl, чтобы найти свой элемент управления, встроенный в пользовательский элемент управления, а затем добавить данные через его свойства. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.findcontrol.aspx

...