質問: "") { ClientScript.RegisterClientScriptBlock(this.GetType(), "key", "alert('入力されていません。');", true); return; } %> RegionID RegionDescription ``` ### 補足情報(FW/ツールのバージョンなど) SQLserver ASP.NET、C#、Visual Studio2019(16.6.2)、Northwind(テーブル:Region) .NET Framework(4.8) sqlDataSource
回答: 検証コントロールを使う案を書きます。ユーザー入力の検証は必須なので必ず検証コントロールを使ってサーバー側でも検証を行うことをお勧めします。 ASP.NET Web Forms アプリに標準で用意されている検証コントロールを使えば、クライアント側での JavaScript / jQuery による検証と、サーバー側での検証の両方が有効になります。 今回の課題「INSERT 時に空白の場合はクライアント側のスクリプトでエラーメッセージを出したい」については RequiredFieldValidator を利用できます。 ツールボックスから RequiredFieldValidator を対象の TextBox の下にドラグ&ドロップして、ControlToValidate プロパティを検証対象の TextBox の ID に設定します。ソース画面で行うのが簡単です。以下の画像を見てください。 !イメージ説明 そのうえでアプリを実行して TextBox が空白のまま挿入]ボタンをクリックするとクライアント側で検証がかかって下の画像のように ErrorMessage プロパティに設定したメッセージが表示されます(画像はデフォルトのままです。もちろん変更可能です) ![イメージ説明 上記画像の例はクライアント側での検証が NG となった場合です。その場合[挿入]ボタンによるポストバックはキャンセルされます。 検証コントロールにはいろいろ種類があって、その使い方は深い話になるのですが、とりあえず今回はこのスレッドの課題の対応のみレスします。勉強してみてください。 **【追記】** 一つ大事なことを書くのを忘れてました。 ASP.NET 4.5 以降、クライアントスクリプトを利用するサーバーコントロールが正しく機能するには、必要なクライアントスクリプトの ScriptManager への登録と、全ページでの ScriptManager の配置が必要です。詳しくは以下の記事を見てください。 ASP.NET 4.5 ScriptManager Visual Studio 2019 の「Web Forms」テンプレートを利用して ASP.NET Web フォームアプリケーションを作成した場合、マスターページを使えばその設定がされた ScriptManager が利用できますので、そうすることをお勧めします。 マスターページを使わない場合、「空」のテンプレートでプロジェクトを作った場合は自力で対応することになります。