VB.NET以编程方式在标签之间添加代码
问题描述:
我有一个自定义控件,可以在异步回传上为我做一些工作。通常情况下,我会直接从演示侧使用ASPX页面下面的代码调用控件:VB.NET以编程方式在标签之间添加代码
<mytag:CustomControl runat="server">
html (or other text) goes here
</mytag:CustomControl>
然而,在我目前的应用程序,我需要dymanically创建代码隐藏控制,使用类似的代码以下几点:
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
答
能够使用文字控制来完成此操作。
代码上面加:
Dim myLiteral As LiteralControl = New LiteralControl
myLiteral.ID = "myLiteral"
myLiteral.Text = "html (or some other text) goes here"
myControl.Controls.Add(myLiteral)
答
你说的数据是什么意思?更多控制?
您可以使用
myControl.Controls.Add(childControlHere);
编辑问题澄清后:
添加文字控制。即
myControl.Controls.Add(new LiteralControl("<b>hello world</b><script type='text/javascript'>alert('hi');</script>"));
答
你的意思是找到并将数据追加到动态控制中的控件?
您可以使用WebControl.FindControl方法来查找嵌入到自定义控件中的控件,然后可以通过其属性添加数据。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.findcontrol.aspx
我已经修改了问题更清楚一点。我不想将控件添加到我的控件中。我想添加通常出现在开始和结束标记之间的文本/ html /脚本数据。 – Brad 2009-12-22 19:00:09