質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

10522閲覧

同じ項目にValidationを複数設定する時の書き方

Takahiro310

総合スコア30

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2016/12/16 00:37

編集2016/12/16 01:05

お世話になります
ASP.NETに関する質問です

環境
・C#.NET 2.0
・Microsoft Visual Studio 2008

あるテキストボックスに以下の3つの検査を行いたい場合を考えます
・入力チェック
・数値チェック
・範囲チェック

またMaximumValueに関してはサーバー側で設定します

###私の実装 (.aspx)

<asp:RequiredFieldValidator runat="server" ControlToValidate="TextBox" ValidationGroup="AllGroup" Display="None" SetFocusOnError="true"> </asp:RequiredFieldValidator> <asp:RegularExpressionValidator runat="server" ControlToValidate="TextBox" ValidationGroup="AllGroup" SetFocusOnError="true" Display="None" ValidationExpression="^[0-9]{1,6}"> </asp:RegularExpressionValidator> <asp:RangeValidator runat="server" ControlToValidate="TextBox" ValidationGroup="AllGroup" SetFocusOnError="true" Display="None" Type="Integer" MinimumValue = "0"> </asp:RangeValidator>

###結果
例えばサーバー側でMaximumValueを100と設定したとします。
その時テキストボックスに &100 と入力すると、数値チェックと範囲チェック両方に引っかかってしまいます。

###解決してほしいこと
これを数値チェックのみ引っかかるようにしたいのですが、どのように実装すればよろしいでしょうか
お力をお貸しください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

これを数値チェックのみ引っかかるようにしたいのですが、どのように実装すればよろしいでしょうか

未入力でない限り RegularExpressionValidator と RangeValidator の両方の検証がかかるので、ユーザー入力が &100 の場合、正規表現 ^[0-9]{1,6} にマッチしないということで RegularExpressionValidator が、数値ではないということで RangeValidator が検証 NG とするのはやむを得ないと思います。

自分が知る限りですが、RegularExpressionValidator で先に検証し、検証結果 NG だったら RangeValidator の検証は止めるというような方法はないと思います。(自分が知らないだけという可能性は否定し切れません。自信度 99% ぐらいです)

RegularExpressionValidator と RangeValidator の代わりに CustomValidator を使い、CustomValidator の中で最初に正規表現で検証し、それにパスしたら次に数値の範囲で検証すると言うことは可能です。

サーバー側での検証メソッド(CustomValidator の場合、自力で書く必要があります)では検証内容に応じてエラーメッセージを書き換えることができます。

ただし、クライアント側でのエラーメッセージが問題で、検証用スクリプト(これも CustomValidator の場合、自力で書く必要があります)でエラーメッセージを書き換えようとしましたが不可で、断念した記憶があります。

投稿2016/12/16 03:23

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Takahiro310

2016/12/16 04:45

ご回答ありがとうございます。 2つのチェックに引っかかるのは仕方ないのですね… 当座、CustomValidator について勉強してみようかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問