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

プロパティをレンダリングします。私の問題は、入力ボックスのIDがわかっている場合でも、HTMLピースであるFindControl("ViewTitle")ため、リテラルコントロールにテキストとしてレンダリングされ、すべての入力コントロールが追加されなかったため、アクセスできません(nullを返すだけです)。コンテナーのコントロール コレクション。確かに を使用Request.Form["ViewTitle"]してその値にアクセスできますが、その値を設定するにはどうすればよいですか?

4

2 に答える 2

0

Jupaol の方法は、動的なコントロールをページに追加するための好ましい方法です。

文字列を挿入したい場合は、ParseControlを使用できます。

ただし、PlaceHolder などの一部のコントロールはコンパイルされません。

于 2012-10-18T23:14:42.843 に答える
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 に答える