【サーバー】に関する知恵袋

【質問】
無料のブログのススメの概要に触れると、ASP.netのWebアプリケーションで、テキストボックスを2つ、そこにボタンをつけたフォームを作りました。テキストボックスは、どちらか片方だけの送信はできないようにしたいです。その部分については、VBであれば例えばif TextboxA.text.length > 0 XOR Textbox.text.length > 0みたいな分岐でいいとは分かるのですが、サーバー側で検証をする場合、無料のブログのススメについて考えてみると、SeverValidateイベントハンドラの扱いがよく分かりません。サーバーの知恵袋について言及すると、サーバーの知恵袋を説明すると、ボタンがClickされたあと、具体的にどこのタイミングでSeverValidateイベントハンドラが発生するのでしょうか? また今回みたいにテキストボックスが2つで一つの分岐を構成する場合、 CustomValidatorコントロールを一つ貼りつけてProtected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate If if TextboxA.text.length > 0 XOR Textbox.text.length > 0 args.IsValid = False Else args.IsValid = True End If End Subみたいな形で検証処理は終わるのでしょうか?
【解答】
フォームのサーバ側バリデーションが実行されるのは、・CausesValidation="true"になっているButton/LinkButton/ImageButtonからのポストバックが発生した場合・明示的にPageのValidateメソッドが呼ばれた場合で、その際に配下のValidatorにonServerValidateイベントが発生します。なので、・CustomValidatorで設定するのは「固定的」あるいは「JavaScriptもいっしょに設定する」バリデの場合・onServerValidateで設定するのは、サーバ側で詳細なバリデする場合です。自分はASP.NETのクライアント検証を使わず、CausesValidationも全部オフで、手動でPage.Validateを行っています。Validator側で引っ掛け、this.isValid = false;とすれば、自然にPage.IsValidステートがfalseになりますよ。サーバーの知恵袋についてだが、CustomValidator使うかonServerValidate使うかは趣味の問題ですが、宣言的に使用できるCustomValidatorのほうが好きです。無料のブログのススメを理解したいのであれば、無料のブログのススメなら、サーバーの知恵袋は、ここいらを参考にhttp://www.atmarkit.co.jp/fdotnet/dotnettips/251aspdisablevalid/aspdisablevalid.html
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1480283574
Webサービス by Yahoo! JAPAN

その他関連ワード