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


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


クラシックASPの限界

以下に示すコードは前の章からコピーしたものです:

<html>
<body bgcolor="yellow">
<center>
<h2>Hello サンプル!</h2>
<p><%Response.Write(now())%></p>
</center>
</body>
</html>

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

クラシック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つです:

<script runat="server">
Sub Page_Load
link1.HRef="http://www.example.com"
End Sub
</script>

<html>
<body>

<form runat="server">
Visit サンプル!
</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サーバーコントロールを宣言します。次に、Clickイベント用のイベントハンドラを作成して、ボタンのテキストを変更します:

<script runat="server">
Sub submit(Source As Object, e As EventArgs)
button1.Text="You clicked me!"
End Sub
</script>

<html>
<body>

<form runat="server">
<asp:Button id="button1" Text="Click me!"
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コントロールを宣言します。検証が失敗した場合、テキスト "The value must be from 1 to 100!" がRangeValidatorコントロール内に表示されます:

サンプル

<html>
<body>

<form runat="server">
<p>Enter a number from 1 to 100:
<asp:TextBox id="tbox1" runat="server" />
<br /><br />
<asp:Button Text="Submit" runat="server" />
</p>

<p>
<asp:RangeValidator
ControlToValidate="tbox1"
MinimumValue="1"
MaximumValue="100"
Type="Integer"
Text="The value must be from 1 to 100!"
runat="server" />
</p>
</form>

</body>
</html>
その他の拡張