[ APS.NET ] ASP コントロール以外で書かれたタグ情報を取得する ( Request )

Pocket

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"];

    }
参考

 

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *