i加载一块html,其中包含类似的东西:
<em> < input type="text" value="Untitled" name="ViewTitle" id="ViewTitle" runat="server"> </em>
进入我的控制。HTML是用户定义的,请不要要求我在ASPX页面上静态添加它们。
在我的页面上,我有一个占位符,我可以使用
LiteralControl target = new LiteralControl ();
// html string contains user-defined controls
target.text = htmlstring
渲染属性。我的问题是,由于它是HTML件,即使我知道输入框的ID,我也无法使用FindControl("ViewTitle")
访问它(它将仅返回null),因为它将其作为文本呈现为文字控件,并且所有输入控件都没有添加到容器的控制集。我绝对可以使用Request.Form["ViewTitle"]
访问其值,但是如何设置其值?
jupaol的方法是将动态控制添加到页面的首选。
如果要插入字符串,则可以使用parsecontrol。
但是,它不会引起某些控件(例如占位符)的汇编。
您的过程是错误的,您正在用属性向客户端渲染一个控件: runat="server"
此属性仅在服务器处理时才有效,您只是呈现
由于您的目标是添加TextBox
(如果我错了,请纠正我),那么为什么不向表格的控件集合添加新的TextBox
?
类似的东西:
protected void Page_Init(object sender, EventArgs e)
{
var textbox = new TextBox { ID="myTextBoxID", Text="Some initial value" };
this.myPlaceHolder.Controls.Add(textbox);
}
并检索它:
var myDynamicTextBox = this.FindControl("myTextBoxID") as TextBox;
我创建了几个工作示例,它们在我的GitHub网站上在线,随时浏览代码