ASP.NET - サーバーコントロール

サーバーコントロールはサーバーが理解できるタグです。

Classic ASPの限界

以下に示すコードは、前節からコピーされたものです:

<html>
<body style="background-color:#e5eecc; text-align:center;">
<h2>Hello CodeW3C.com!</h2>
<p><%Response.Write(now())%></p>
</body>
</html>

上記のコードは、Classic ASPの限界を反映しています:コードブロックは出力が必要な場所に配置する必要があります。

Classic ASPを使用すると、実行可能なコードとHTML自体を分離することはできません。これにより、ページの読みやすさとメンテナンスが難しくなります。

ASP.NET - サーバーコントロール

サーバーコントロールを通じて、ASP.NETは上記で説明した「スパゲッティコード」の問題を解決しました。

サーバーコントロールはサーバーが理解できるタグです。

サーバーコントロールには3種類あります:

  • HTMLサーバーコントロール - 伝統的なHTMLタグ
  • Webサーバーコントロール - 新しいASP.NETタグ
  • Validationサーバーコントロール - 入力検証用

ASP.NET - HTMLサーバーコントロール

HTMLサーバーコントロールはサーバーが理解できるHTMLタグです。

ASP.NETでのHTML要素はテキストとして処理されます。これらの要素をプログラム可能にするには、これらのHTML要素に runat="server" 属性この属性は、この要素がサーバーコントロールであることを示します。また、サーバーコントロールを識別するために id 属性を追加する必要があります。この id は、実行時のサーバーコントロールを操作するために使用できます。

注釈:すべての HTML サーバーコントロールは、runat="server" 属性を持つ <form> タグ内に配置する必要があります。runat="server" 属性は、フォームがサーバーで処理されることを示し、そのフォームに含まれるコントロールがサーバースクリプトでアクセス可能であることを示します。

以下の例では、.aspx ファイルで HtmlAnchor サーバーコントロールを宣言しました。それから、イベントハンドラでその HtmlAnchor コントロールの HRef 属性を操作しました。Page_Load イベントは、ASP.NETが理解できる多くのイベントのうちの1つです:

注釈:イベントハンドラ(event handler)は、特定のイベントに対してコードを実行するサブルーチンです。

<script runat="server">
Sub Page_Load
link1.HRef="http://www.codew3c.com"
End Sub
</script>
<html>
<body>
<form runat="server">
<a id="link1" runat="server">CodeW3C.com を訪問!</a>
</form>
</body>
</html>

ヒント:実行可能なコード自体は、HTMLの外に移されました。

ASP.NET - Web サーバーコントロール

Web サーバーコントロールは、サーバーが理解できる特別な ASP.NET タグです。

HTML サーバーコントロールと同様に、Web サーバーコントロールもサーバー上に作成されます。これらもまた、有効にするために runat="server" 属性が必要ですが、Web サーバーコントロールは既存の HTML エレメントにマッピングする必要はありません。代わりに、より複雑なエレメントを表現します。

Web サーバーコントロールの作成方法は以下の通りです:

<asp:control_name id="some_id" runat="server" />

以下の例では、.aspx ファイルで Button サーバーコントロールを宣言しました。それから、クリックイベントに対してイベントハンドラを生成し、ボタンのテキストを変更するようにしました:

<script runat="server">
Sub submit(Source As Object, e As EventArgs)
button1.Text="あなたがクリックした!"
End Sub
</script>
<html>
<body>
<form runat="server">
<asp:Button id="button1" Text="クリックして!" runat="server" OnClick="submit"/>
</form>
</body>
</html>

ASP.NET - Validation サーバーコントロール

ユーザー入力の検証に使用される Validation サーバーコントロールです。ユーザーの入力が検証に通らなかった場合、エラーメッセージをユーザーに表示します。

各 validation コントロールは特定の验证タイプを実行します(例えば、特定の値や範囲の値の验证など)。

デフォルトで、Button、ImageButton、またはLinkButtonがクリックされたときにページの验证が実行されます。CausesValidation プロパティを false に設定することで、特定のボタンクントロールがクリックされたときの验证を阻止できます。

Validation サーバーコントロールの作成方法は以下の通りです:

<asp:control_name id="some_id" runat="server" />

以下の例では、.aspx ファイルで TextBox コントロール、Button コントロール、および RangeValidator コントロールを宣言しています。验证が失敗すると、テキスト「値は1から100まででなければなりません!」が RangeValidator コントロールに表示されます:

<html>
<body>
<form runat="server">
<p>1から100までの数字を入力してください:
<asp:TextBox id="tbox1" runat="server" />
<br /><br />
<asp:Button Text="提出" runat="server" />
</p>
<p>
<asp:RangeValidator
ControlToValidate="tbox1"
MinimumValue="1"
MaximumValue="100"
Type="Integer"
Text="値は1から100まででなければなりません!"
runat="server" />
</p>
</form>
</body>
</html>

この例を表示