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"];
}
参考