問題タブ [model-validation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
regex - カスタムModelValidatorProviderでRegularExpressionAttributeを使用する
ModelValidatorProvider
ASP.NETMVCアプリで使用しているカスタム実装があります。しかし、現在、を生成するプロパティでエラーが発生していますRegularExpressionAttributeAdapter
。エラーはEither ErrorMessageString or ErrorMessageResourceName must be set, but not both.
、コードがリソース名を設定しないが、メッセージを設定することです。
ErrorMessageResourceName
をnullに設定し、をnullに設定しようとしましたErrorMessageResourceType
が、役に立ちません。例外を設定しないErrorMessage
と例外はなくなりますが、検証のためのユーザーフィードバックが失われます。
さて、これは以前は機能していたことに注意する必要がありますが、最近、MVC3ではなくMVC4を使用するようにアプリをアップグレードしました。これが、MVC4に固有のものなのか、それとも他のものなのか知りたいのですが。
asp.net - MVC3:文字列以外のEditorForModel()
を使用したフォームで使用したいモデルがありEditorForModel()
ます。文字列以外のすべてのデータ型(bool、DateTimeなど)の場合、[Required}
データアノテーションを設定していなくても、作成されたフォームによってフィールドが必須になります。Object.cshtml
これが必須フィールドではないことを認識するようにファイルを設定するにはどうすればよいですか?
asp.net-mvc-3 - カスケード ドロップダウンは、投稿後に選択項目を失います
複数の再利用可能な要素を使用してビルドしようとしている MVC3 カミソリ プロジェクトがあります。次のような多くのモデルクラスがあります
この例では省略している他のフィールドがあります
MyAccountsDropDown.cshtml は次のようになります。
私のコントローラーメソッドは次のようになります。
したがって、ビューが (jQuery ダイアログ ボックスとして) 開くと、フォームがすべて設定されます。orgName を選択すると、データベースから accountName がプルされます (カスケード)。モデル検証を使用しているため、すべての必須フィールドに入力せずに送信を押すと、検証メッセージが表示されます。また、送信前に入力したフィールドの事前入力値も表示されます。削除されるのは、カスケードされたドロップダウン値です。そのため、選択された orgName は引き続き表示されますが、accountName ドロップダウンは以前に入力された値をデータベースから失います。
送信がクリックされる前に既にプルされた SelectItems を維持するにはどうすればよいですか
c# - カスタム DataAnnotationsModelValidatorProvider を使用したサーバー側の検証
静的コードではなくデータ ストアから検証属性を設定できるように、カスタム プロバイダーをセットアップしました。私の .NET MVC 4 プロジェクトのクライアント側の検証ではうまく機能しますが、サーバー側の検証を機能させることができません。
CustomModelValidatorProvider.cs:
私の Global.asax.cs には次のものがあります。
そして、私が持っているWeb APIメソッドで:
ここで、valid は常に true です。Jquery クライアント側の検証でエラーが表示された場合でも。サーバー側では、データ注釈の適用にカスタム プロバイダーが使用されていません。GetValidators() にブレークポイントを設定すると、ビューが作成されたときに呼び出され、クライアント側のバリデーターが正しく表示されますが、モデルがコントローラーにバインドされたときに再度呼び出されることはありません。
私は一歩を踏み外しましたか?どんな助けでも大歓迎です!
アップデート
カスタム バリデータは、オブジェクトがコントローラーにポストされると正しく機能しますが、ApiController にポストされると起動しません。
asp.net-mvc-3 - 新しいオブジェクト ASP.NET MVC のみに必要な ModelValidation
昨日からこの問題があります。私の User モデルには、「ConfirmPassword 」という[NotMapped]があります。データベースには保存しませんが、新しいユーザーのデータ入力を常に検証するために作成フォームで使用しています。
以来、それは大丈夫です。問題は私の [HttpPost] Edit アクションにあります。タイプなしで一部のユーザーのデータを編集し、パスワードを確認できるはずです。パスワードを変更したい場合は、古いパスワードを確認し、新しいパスワードを通知する方法として、Password と ConfirmPassword の両方を使用します。しかし、そうでない場合は、空白のままにします。
ModelState.IsValid() 条件を渡すことができるように、以下のコードを既に使用しましたが、機能しました。
しかし、db.SaveChanges() の直前に、User ユーザー ビュー モデルが考慮されるため、両方のプロパティが空であり、次のようになりました。
問題は、オブジェクトを更新するときに必要なモデルの検証をスキップするにはどうすればよいかということです。
ValidationAttributeおよび DataAnnotationsModelValidatorを拡張するクラスを使用したカスタム ModelValidations については既に読みましたが、正しく行っていません。
何か案が?UserId プロパティが null かどうかを確認するカスタム モデル検証を作成するにはどうすればよいですか。作成または編集アクションを実行しているかどうかを確認するには、これは良い方法です。
ありがとう、パウロ
asp.net-mvc-3 - MVC3のデフォルトのプロパティ値
MVC3にPOCOエンティティを含む2つのクラスがあります
JoinDate
ProjectでTeamMemberのデフォルト値を設定したいStartDate
。誰かが私をこれから引き抜くことができますか
asp.net-mvc - MVC DateTime 検証の失敗
多くのsimulairの質問が見つかりましたが、うまく機能しているクリーンなソリューションではありません。これを機能させるためのカスタム コードがたくさんありますが、それはなぜですか? これは最初から機能しないはずですか?
私が奇妙だと思うのは、IE9 では機能するが、Firefox と Chrome では機能しないということです。FirefoxまたはChromeで試行するたびに、「誕生日は日付でなければなりません」というメッセージが表示されます。
新しい MVC 4 RTM プロジェクトで以下のコードを試してみると、うまくいきません。すべてのブラウザで DateTime.Now のデフォルトが dd-MM-yyyy (オランダ) になっていますが、Firefox と Chrome では送信できません。
グローバリゼーション タグは web.config に設定されていないため、既定値を使用する必要があります。私はオランダ出身なので、私が推測するクライアント文化を得る必要があります.
マークアップ
asp.net-mvc-3 - 重複のカスタム検証が機能しない
重複するユーザー名と電子メールのカスタム検証を作成したいと考えています。モデルはそうです:
すべての検証は機能しますが、私のカスタム検証 - ValidateDuplicateUsernameとValidateDuplicateEmailは機能しません。ここで何が問題なのですか?
asp.net-mvc-3 - MVC4が表示されない検証エラーメッセージ
私はMVC4を使用しています。
検証は失敗しますが、検証エラーメッセージは表示されません。
これが私のモデルです。
コントローラ。
ビューは
検証を行うためのより良い方法があるかどうかも教えてください。
.net - コレクションの MVC3 クライアント側検証、値を持つ少なくとも 1 つの要素
私のビューモデル
私のモデル
私の見解ではViewModel.Collection
、エディタ テンプレートでレンダリングしています
ここで、クライアント側の検証を使用して、少なくとも 1 つのチェックボックスがオンになっていることを確認します。
プロパティにカスタム検証属性を設定しItem.Selected
、新しいアダプターを登録することでこれを実現できます$.validator.unobtrusive.adapters.add()
しかし、コレクションのアイテムの1つがこのカスタム検証を使用してViewModel.Collection
いる場合、サーバー側ではすでに検証しているため、属性はむしろプロパティにあるべきだと思います:Selected = True
リフレクションを使用してSelectOnePropertyAttribute
、チェックするプロパティを見つけます。
これがクライアント側の検証です