1

我加载了一段 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),因为它作为文本呈现到 Literal 控件中,并且所有输入控件都没有添加到容器的控件集合。我绝对可以使用Request.Form["ViewTitle"]它来访问它的值,但是我该如何设置它的值呢?

4

2 回答 2

0

您的过程是错误的,您正在使用属性向客户端呈现控件: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 网站上在线,请随意浏览代码

于 2012-10-18T23:02:20.257 回答
0

Jupaol 的方法是向页面添加动态控制的首选方法。

如果要插入字符串,可以使用ParseControl

但是,它不会导致对某些控件(例如 PlaceHolder)进行编译。

于 2012-10-18T23:14:42.843 回答