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

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

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

ASP.NET

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

Q&A

1回答

3478閲覧

動的なバリデーションチェックの実装方法について

big_D

総合スコア7

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

ASP.NET

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

0グッド

0クリップ

投稿2021/11/07 12:35

編集2021/11/07 22:33

目を通してくださりありがとうございます。
今回、ログイン画面において動的にバリデーションチェックの実装を行いたく、
試行錯誤していたのですが、思ったような動きにならず皆様のお力添えを頂きたくご質問させていただきます。

質問:入力桁数には制限をかけず、ユーザの入力した文字数に応じて、動的に8桁以上12桁未満 と言った条件のバリデーションチェックを実装することは可能でしょうか。

期待する動作:
上回る場合
ユーザが13文字目を打った時に、エラーメッセージを表示し、1文字消したらメッセージは消えると言った具合になります。

ユーザーが7文字しか打っていない場合、エラーメッセージを表示し、8文字目を打った時点でエラーメッセージは消えると言った具合です。

開発環境:
Visual Studio Community2019
ASP.NET MVC5
.NET WEBアプリケーション

現状:
8桁を下回った場合、下記コードのエラーメッセージが表示されているのですが、
パスワード入力欄に12桁以上の値を入力できない状態となっております。

[StringLength(12,MinimumLength = 8, ErrorMessage = "パスワードは8桁から12桁までの値を入力してくだい。")]

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/11/07 13:15

まず、何はともあれ、何を作っているか(ホントに Razor Pages なのか?)と、開発環境(OS, Visual Studio のバージョン、.NET Framework / Core どっちかとそのバージョンなど)を書こう。 あなたのいう「動的なバリデーションチェック」とはどういう意味? 「パスワード入力欄に12桁以上の値を入力できない状態」はそのようにしたからそうなっていると思うが、それに何の不都合があるの?
big_D

2021/11/07 13:54 編集

ご返信ありがとうございます。 おっしゃる通りです。 ※開発環境は下記になります。 Visual Studio Conmunity 2019 ASP.NET MVC5 ※動的なバリデーションチェックについて 今回実装したいログインフォームにおいては、ユーザがパスワード入力を行っている側から、エラーメッセージを表示したいと思っております。 ※ユーザが13文字目を打った時に、エラーメッセージを表示し、1文字消したらメッセージは消えると言った具合になります。 分かりづらい説明で、動的なバリデーションチェックについて理解できない場合、GitHub のマイページより、パスワードの変更画面を確認していただけると幸いです。(GitHub では72桁が上限になっていました。)
退会済みユーザー

退会済みユーザー

2021/11/07 14:05 編集

何を作っているかと開発環境は質問欄を編集して追記願います。 問題を再現できるサンプルコードを書いてください。 やりたいこと「ユーザが13文字目を打った時に、エラーメッセージを表示し、1文字消したらメッセージは消える」も質問欄を編集して追記願います。
big_D

2021/11/07 14:05

長くなってしまったので、分けて投稿いたします。 ※パスワード入力欄に12桁以上の値を入力できない状態にしたい理由 今回、パスワード入力欄と再確認パスワード入力欄を用意しているのですが、二つの入力欄とも、ショルダーハッキング対策として、●●●で見えないようになっております。(表示/非表示の切り替えは可能です。) 今回、このようなバリデーションチェックを行いたいのは、実体験によるものなのですが、ユーザー登録を行い、ログインをしようとした所、何度やっても入ることが出来ない時がありました。 問題として挙げられるのは、パスワードの打ち間違えかと思うのですが、私はメモ帳アプリにパスワードを入力した上で、コピペで行っているため間違えようがありません。 結果的に、今回の問題としては、ユーザー登録を行なったページでは、12桁が最大桁数となっていたのに、私が登録したパスワードが13桁だった為、気づかぬ合間に1文字削除されていたことが要因だと分かりました。 説明だと分かりづらいと思い、長文での説明になってしまいましたが、こう言った実体験のもと、コピペで入力した際に、上限はないけど、桁数オーバーしてますよと言った実装を行いたいと思っております。
退会済みユーザー

退会済みユーザー

2021/11/07 14:11

Razor は関係ないのでは? であればタグは削除してください。
big_D

2021/11/07 14:13

きちんと理解していない状況での、質問で申し訳ありません。 タグは削除いたします。
Zuishin

2021/11/07 14:28

ログインと登録で最大文字数を変えなければいいのでは?
退会済みユーザー

退会済みユーザー

2021/11/07 19:02

この方向性の実装が「気づかぬ合間に1文字削除されていたこと」を排除できる場面は非常に限定的だと思うのですが、「気づかぬ合間に1文字削除されていたこと」はただのきっかけであって、実現したい要望ではないという認識で正しいでしょうか? いずれにしても、情報は「質問への追記・修正の依頼」欄ではなく、「質問本文」を修正した方が回答が付きやすいです。
退会済みユーザー

退会済みユーザー

2021/11/07 21:30

何を作っているかと開発環境は質問欄を編集して追記願います。 問題を再現できるサンプルコードを書いてください。 やりたいこと「ユーザが13文字目を打った時に、エラーメッセージを表示し、1文字消したらメッセージは消える」も質問欄を編集して追記願います。
退会済みユーザー

退会済みユーザー

2021/11/07 22:36

依頼に答えてください⇒ 問題を再現できるサンプルコードを書いてください。 View のコードは必須です。
退会済みユーザー

退会済みユーザー

2021/11/08 01:49

> ASP.NET MVC5 それ、間違いないですか? MVC5 と言うと世間一般の常識的には .NET Framework 版のアプリですが、実は .NET 5.0 版の ASP.NET Core MVC では? だからコードを書くように言っているのに・・・ 先に 2 度も言っているのに(これで 3 度目)無視してるというのはどういうこと?
退会済みユーザー

退会済みユーザー

2021/11/09 02:13

質問者さん、無言ですが、回答したのでそれに対するフィードバックを書こう。役に立った/立たなかったぐらいはすぐ返せるのでは? 役に立たなかったらどこが期待と違うかなどを書くと、よりあなたの期待に近い回答が得られるかも。とにかく無言で放置は NG です。
guest

回答1

0

質問のコメントに対する返事がないので、もしかすると違うかもしれませんが・・・

[StringLength(12,MinimumLength = 8, ErrorMessage = "パスワードは8桁から12桁までの値を入力してくだい。")]

という属性をモデルのプロパティに付与してスキャフォールディング機能によって Controller / View を作った場合、それからレンダリングされる html ソースの input 要素には maxlength="12" という属性が付与される場合があります。

その場合、ブラウザ依存ですが Chrome 等では 12 文字を超える入力はできなくなります。

自分が試した限りですが、ASP.NET Core 3.1, 5.0 MVC ではそうなります。.NET Framework 4.8 の MVC5 では input 要素に maxlength="12" という属性が付与されることはありませんでした。

解決策は、そういう上限は設けない、もしくはもっと上げるということになるかと思います。ちなみに、ASP.NET Identity を使って自動生成される Login は下限はあっても上限はないです。

【追伸】

どうしてもということなら、ブラウザに画面が表示されてから、ブラウザの機能を利用して html ソースを表示し、当該テキストボックスの部分の <input ... /> を View にコピーし、maxlength="12" を削除するという手が使えると思います。

投稿2021/11/08 04:34

編集2021/11/08 08:06
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問