asp:CheckBox のような ASP コントロールではなく、直接 HTML タグ ( textarea や input など ) で記述された内容は ID ではなく Request[“name 属性”] で取得することができます。
スポンサーリンク
しかし、下記に示すサンプルコードのように HTML タグを直接記述した場合には、ASP.NET の管理外となるため( ビューステートにも値は設定されない )、ポストバック後にブラウザに表示される際には、input タグや textarea に記述したテキストの内容は ASPX で定義されている初期状態に戻ってしまいます。
ASPX
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>ASP コントロールと HTML を直接記述</title> </head> <body> <form id="form1" runat="server"> <div> <!-- ASP コントロール --> <asp:CheckBox ID="CheckBox1" runat="server" Text="チェックボタンコントロール" /> <!-- ASP コントロールではなく、HTML タグを直接記述 --> <input id="Checkbox2" type="checkbox" name="checkbox">HTMLチェックボックス</input> <textarea id="TextArea1" name="textarea" cols="20" rows="2"></textarea> <asp:Button ID="Button1" runat="server" Text="Button" /> </div> </form> </body> </html>
VB.NET
Protected Sub Button1_Click(ByVal sender As Object, _ ByVal e As EventArgs) Handles Button1.Click 'ASP コントロールは ID で取得する Dim aspcheckbox As Boolean = CheckBox1.Checked ' *** メモ *** ' ' HTML コントロールの内容をポストバック時に取得するには ' Request("name 属性の値") の形式で可能であるが、 ' ビューステートにデータがないのでポストバック後の表示では ' 初期化されてしまう ' チェックされている場合は 文字列 "on" が取得できる ' チェックされていない場合は Nothing となる Dim htmlcheckbox As String = Request("checkbox") ' HTML コントロールの値を取得する Dim htmltextarea As String = Request("textarea") End Sub
C#
protected void Button1_Click(object sender, EventArgs e) { // ASP コントロールは ID で取得する bool aspcheck = CheckBox1.Checked; // *** メモ *** // // HTML コントロールの内容をポストバック時に取得するには // Request["name 属性の値"] の形式で可能であるが、 // ビューステートにデータがないのでポストバック後の表示では // 初期化されてしまう // チェックされている場合は 文字列 "on" が取得できる // チェックされていない場合は null となる string htmlcheckbox = Request["checkbox"]; // HTML コントロールの値を取得する name 属性の値をキーとする string textarea = Request["taname"]; }
参考