Day01-3
目的
- 検証コントロールの使用方法を学習する。
ポストバック処理
ポストバック処理に関してハンドリングされるイベントのタイミング
- Page_PreInitイベント
- Page_Initイベント
- コントロールの初期化イベント
- Page_Loadイベント
- 変更系イベント
- クリック系イベント
- Page_PreRenderイベント
- Page_Unloadイベント
- 斜め文字は、ポストバックイベント。
- Page_Loadが呼び出される。
ポストバック時に実行したくない処理の記述方法
If Not Page.IsPostback then
' ポストバック時に実行したくない処理
' (最初の呼び出し時のみに実行)
EndIf
@startuml
' 手書き風
skinparam handwritten true
' 役者
node Client{
actor user
node WebPage
}
node Server
' 関係
WebPage -> Server: 1.ViewState送信
Server -> Server: 2.ViewStateを解析
Server -> Client: 3. 再生成された元の画像を応答
@enduml
ビューステートを利用する
- ViewStateとは、ポストバック前後でページの[State(状態)\]を維持するための仕組み
例
-
HTML内に記述された隠しフィールド
ビューステートのイメージ図
@startuml
' 手書き風
skinparam handwritten true
' 役者
node Client{
actor user
node WebPage
}
node Server
' 関係
WebPage -> Server: 1.ViewState送信
Server -> Server: 2.ViewStateを解析
Server -> Client: 3. 再生成された元の画像を応答
@enduml
構文
ViewState(名前)\[=値\]
- ※ ViewStateで保持されるのは、同一ページ内で行われたポストバックの前後のみ
ユーザ入力の妥当性を検証する
- 妥当性検証=FoolProof -> 検証コントロールにより実現
@startuml
' 手書き風
skinparam handwritten true
' 役者
node Client
node WebPage
node WebServer{
actor ValidatorIn
}
actor Validator
' 関係
Client -> WebPage: 入力
Validator <- WebPage: 入力チェック
Validator -> Validator: エラー(NG)
Validator -> WebServer: データ送信(OK)
ValidatorIn -> ValidatorIn: 最終チェック
@enduml
ASP.NET 3.5で利用可能な検証コントロール
コントロール名 | 内容 |
---|---|
RequiredFieldValidar | 必須チェック(フォームへの入力の有無を確認) |
RangeValidator | データ範囲チェック(数値や日付などの上限/下限を確認) |
CompareValidator | 比較チェック (コントロール同士、またはコントロールと特定の値とを比較し、等号/不等号, 大小関係, データ型などを確認) |
RegularExpressionValidator | 正規表現チェック |
CustomValidator | カスタムの検証チェック |
ValidationSummary | 検証コントロールのサマリ表示 |
検証コントロールの共通プロパティ
挙動
プロパティ名 | 内容 |
---|---|
ControlToValidate | 検証対象となるサーバーコントロールのID値 |
EnableClientScript | クライアント側の検証を有効にするかどうか(True/False) |
Enabled | 検証コントロールそのものを有効にするかどうか(True/False) |
SetFocusOnError | エラー時に検証対象のコントロールにフォーカスをセットするかどうか(True/False) |
ValidationGroup | 検証コントロールが属する検証グループ |
表示
プロパティ名 | 内容 |
---|---|
Display | エラーメッセージの表示方法(None , Static , Dynamic) |
ForeColor | エラーメッセージの表示色 |
ErrorMessage | 検証失敗時に表示するエラーメッセージ |
Text | 検証失敗時に表示するテキスト |
その他
プロパティ名 | 内容 |
---|---|
isValid | 検証が成功したかどうか(Readonly) |
プロパティに関する補足
ErrorMessage/Textプロパティについて
プロパティ名 | 内容 |
---|---|
ErrorMessage | ValidationSummaryコントロールに引き渡すためのメッセージ |
Text | 検証コントロール自身に表示するためのテキスト -> 視覚的に場所を示すための目印 |
Enabled/EnabledClientScriptプロパティ
プロパティ名 | 内容 |
---|---|
Enabled | サーバサイドでのチェック処理 PHPとかで実装する側 |
EnabledClientScript | クライアントサイドでのチェック処理(JS) JavaScriptとかで実装する側 |
ValidationGroupプロパティ
ValidationGroup
に値を設定すると、ValidationGroup
に属する検証コントロールだけが実行される。
LabelコントロールとLiteralコントロール
- Labelコントロール: 修飾可能
- Literalコントロール: 修飾不可
まとめ
Page_Loadイベントは、ロード時だけでなく、ポストバック時にも実行される。
ポストバック処理かどうかは、Page.isPostback
で取得可能。
ViewStateは、状態を保持する仕組み
Validationコントロールを利用することで、定型的な入力値検証をコーディングレスで実装可能!
以上