1

私は私のデフォルトのaspxファイルにこのコードを持っています:

<body>
    <form id="form1" runat="server">
    <div>
        <asp:PlaceHolder ID="holder1" runat="server">
            <asp:Label ID="label1" runat="server" Text="Label">
            </asp:Label>
            <input type="text" ID="txt" runat="server"/>
            <asp:TextBox ID="txt2" runat="server"></asp:TextBox>
             <asp:Button Text="Ok" ID="btnOk" runat="server" onclick="btnOk_Click" />
        </asp:PlaceHolder>


    </div>
    </form>
</body>

そして私の背後にあるコードは:

        TextBox tb1 = holder1.FindControl("txt") as TextBox;
        Response.Write(tb1.Text);
        TextBox tb2 = holder1.FindControl("txt2") as TextBox;
        Response.Write(tb2.Text);

私の問題は、findcontrol( "txt")がnull値を返すことです!!! 使用したので<input>、このコントロールをどのように処理できますか?

4

3 に答える 3

4

holder1.FindControlまず、コントロールに直接アクセスできるため、は必要ありません。

inputコントロールを取得するには、コードを使用します。

HtmlInputText tb1 = this.txt;
Response.Write(tb1.Value);

System.Web.UI.HtmlControlsをインポートする必要がある場合があります。

Using System.Web.UI.HtmlControls;

編集

Javascriptを介して動的に追加されたコントロールを見つけるには、Requestオブジェクトを使用する必要があります。

string theValue = Request.Form["txt"].ToString();
于 2012-09-24T13:36:18.053 に答える
1

input type="text"ではありませんTextBox。したがって、キャストするか、代わりにHtmlInputText使用する必要があります。TextBox

var txt = (HtmlInputText)row.FindControl("txt");

using System.Web.UI.HtmlControls、を追加する必要があることに注意してください

于 2012-09-24T13:36:24.177 に答える
0

MSDN:

Control.FindControl:メソッド指定されたサーバーコントロールの現在のネーミングコンテナを検索します。

サーバー制御ではないので、それを見つけるのは無茶苦茶ではありません!サーバー側ではないコントロールを処理する他の方法はありますか?

サーバーで実行されていないテキストボックスのテキストを取得したい場合はどうなりますか。

于 2012-09-24T13:37:00.410 に答える