問題タブ [unobtrusive-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.
asp.net-mvc-3 - ASP.NET MVC 3で目立たない検証を使用して、フォームが無効な場合にアクションを実行するにはどうすればよいですか?
jQuery UIタブがあり、最初のタブに1つの必須フィールドがあるページがあります。検証は機能し、ユーザーが値を入力していない場合は、フィールドの横に検証メッセージが表示されます。ただし、ユーザーが最初のタブを表示していない場合、フィールドが無効であることは明らかではありません。
この場合、最初のタブを表示したいのですが、「無効な」イベントのコールバックを登録する方法がわかりません。
また、タブの上に検証の概要を表示することも検討しました。これは、ユーザーが使用しているタブに関係なく表示されますが、ユーザーをフィールドに移動することをお勧めします。
jquery.validate.unobtrusive.jsファイルを調べてみましたが、jquery.validate.jsが拡張されているようです。jquery.validateのドキュメントを見ると、 validateメソッドinvalidHandler
に渡すことができるオプションがあることがわかりますが、そのメソッドはjquery.validation.unobtrusiveによって呼び出されるため、これを使用する方法がわかりません。
ここで少し迷っていますので、助けていただければ幸いです。
編集
答えはわかりませんでしたが、回避策を考え出しました。これを以下に投稿しました。それでも、誰かがこれを行うためのより良い方法で答えることを願っています。
localization - ASP.NET MVC3 控えめな jQuery 検証メッセージのローカリゼーション
私は、ASP.NET MVC 3 jQuery の控えめな検証メッセージのローカリゼーションにこだわっています。具体的には、「数値」検証を使用します。モデル入力に数値プロパティがある場合、html は data-val-number 属性でレンダリングされ、値は「フィールド Quantity は数値でなければなりません」です。この文字列をローカライズする方法。データ注釈属性を使用すると、ローカライズされたメッセージを定義するのに問題はありません。ただし、数値の検証では、属性を指定する必要はありません。
では、目立たない検証によってローカライズされた検証メッセージを生成するにはどうすればよいでしょうか?
asp.net-mvc - asp.net mvc 3でのリモート検証
mvc2 から mvc3 へのアップグレードの過程にあり、リモート検証機能に本当に問題があります。これは、web.config の appsetting がどのように見えるかです
これは、私のモデルと関連するメタデータがどのように見えるかです
必要なjqueryファイルが正しい順序でページにロードされていることを確認しました。生成された html コードを検査すると、リモート検証用に生成された HTML5 フィールドが見つかりません (正規表現および必要な検証用のフィールドがそこに存在します)
何が問題なのかわからない。サンプルの mvc3 プロジェクトを作成しましたが、そのプロジェクトではすべて正常に動作しているように見えますが、アプリケーションに実装しようとするとうまくいきません。どんな助けでも大歓迎です。
ありがとう
asp.net-mvc-3 - ASP.NetMVC3パーシャルビューで目立たない検証が機能しない
次のように、独自のフォームタグを格納する部分ビューを設定しました。
@ Html.Action( "Create")を使用してページにレンダリングします(これはテーブルの一部であるため、<tr>タグです。
奇妙な理由で、クライアント側の検証が機能せず、投稿時に最初にエラーが表示されます。
部分ビューとクライアント側の検証について何か特別なことはありますか?
次のスクリプトを含めました。
編集
このスクリプトをページに投げてみました:
「true」と警告するので、クライアント側の検証スクリプトは間違いなくそこにあり、何らかの理由で問題のフィールドをチェックしていません:-/
編集2
ページのソースコード全体(HTML + JS)をpastebinにアップロードしました:http://pastebin.com/GvqLW495
asp.net-mvc-3 - ASP.NetMVC3-エディターテンプレートのクライアント側の控えめな検証
ASP.Net MVC 3を初めて使用する場合、カスタムの方法で日付を表示するために作成したエディターテンプレートに対して、クライアント側の控えめな検証を実装しようとしているときに、いくつかの問題に直面します。
UI
日付を3つのtexboxUI形式で次のように表示する必要があります
日付を3つの部分に分けて表示するため
のEditorTemplateを作成しました。
モデルモデルの
サブオブジェクト
の
プロパティである生年月日フィールドを、この構造のこのプロパティにバインドする必要があります
クライアント側の検証
IClientValidatableを実装するカスタム検証属性を設定しました
ここで、Day、Month、Yearテキストボックスの要素名をクライアント側の検証要素に送信しようとしています。これにより、後でこれらの要素を使用してクライアント側で検証を行うクライアント側のjquery検証メソッドとアダプターを記述します。
今すぐ表示このエディターテンプレートを使用するには、次の行を表示します
ビューに関連するすべてのjquery検証ファイルを参照として追加しました
質問
- IClientValidatableを実装しましたが、これはhtmlの控えめなJavaScript検証属性を出力していません。テスト目的で、このエディターテンプレートを使用していないモデルの別のプロパティに同じ属性(DateTimeClientValidation)を配置すると、それらの検証属性が出力され、このエディターテンプレートに対してのみ出力されません。どこが間違っていたのでしょうか?
- エディターテンプレートの検証メッセージスパンに関して、ビューのみに配置するのは正しいですか、それともエディターテンプレートに直接配置する必要があります(@ Html.ValidationMessageFor(m => m.MySubModel.DateofBirth))
- この例では、私はデザインに正しく含まれていますか?これは実際にはモデルに配置した属性であるDateTimeClientValidationAttributeを配置しましたが、このコンポーネントはUIについて少し知っています(Day、Month、Year要素を出力しようとしているため)クライアントの名前)、これによりModelはViewについて少し知ることができますが、ここで設計原則を破っていますか?
- DateTimeClientValidationAttributeで、クライアントスクリプトが検証を実行できるように、日、月、年の要素名をクライアントに出力しようとしています。ただし、モデルプロパティDateofBirthはサブオブジェクトにあるため、スクリプトの実際の要素名はMySubObject.DateOfBirthであり、Dayテキストボックス名はMySubObject.DateofBirth.Dayになります。GetClientValidationRulesメソッドで完全修飾モデル名を見つけるにはどうすればよいですか。 、クライアントに名前を出すことができるように?
このすべてを読み上げるために辛抱強く、そして答えをありがとう
validation - ASP.Net MVC3 - EditorTemplate のレベルでカスタム クライアント検証を適用できますか
モデル内のフィールドの 1 つが EditorTemplate にバインドされている場合、モデル内のフィールドが検証属性で装飾されている場合、JavaScript の目立たない data-val-* パラメータが EditorTemplate に対して生成されます。
また、IClientValidatable で検証属性を実装してカスタム クライアント検証を適用し、このフィールドをそのカスタム属性で装飾すると、クライアント ルールのクライアント側で EditorTemplate の data-val-* 属性が生成されますか?カスタム検証属性を追加しますか?
私はそれが機能していないようです。クライアント側の属性を発行しません。
asp.net-mvc-3 - MVC3Razor-目立たない検証が機能しない
検証が機能しない理由を誰かが理解できますか?現在、データ挿入ではクライアント側でキャッチして必要なフィールドメッセージを表示する代わりに、nullを許可しないため、挿入で投稿して失敗します。
http://pastebin.com/4grwD02iを見る
コントローラー
http://pastebin.com/jdbYk8tR
レイアウト
http://pastebin.com/AbQ9xYLG
AppSettings
~~ UPDATE ~~
モデル
http://pastebin.com/FJkPgKsX
DALにLinqtoSQL DBMLファイルを使用しているだけなので、プロパティの装飾は行っていません。これを実行してもDBMLを使用できますか?
unobtrusive-validation - ネストされた(コレクション)プロパティのMVCクライアント側検証
私はasp.netmvc3とjqueryの控えめな検証を使用しています。最近、標準のDataAnnotationsからFluentValidationに変更しましたが、うまく機能しています。
FluentValidationを選択した主な理由は、ビューモデルでネストされたプロパティを検証する必要があることでした(ただし、これを使用する他のクールな理由があることがわかりました)。
FluentValidationを使用して、VmとElementVmのバリデーターを作成しました。単体テストは緑色で、サーバー側の検証が機能していることを示しています。
クライアント側、「Prop」および「AnotherProp」は機能しています-私の検証ルールも期待どおりにクライアント側で実行されています(DataAnnontationの場合と同様)が、すべての要素がクライアント側の検証をまったく取得していません-私は検査しますdomであり、すべてのdata-val、data-requiredなどの属性が欠落していることを確認できます。
ビューでhtmlを生成するためにさまざまなアプローチを試しましたが、「Prop」と「AnotherProp」はHtml.TextBoxFor(m => m.Prop)を使用して生成され、要素は部分的に生成されます。問題が始まります。Html.TextBoxFor(m => m.Value)を選択すると、すべての要素テキストボックスの名前/ IDが同じになるため、Html.TextBox(Model.Id)を使用して一意のID /名前を生成しようとしましたが、検証プロパティはありません。
だから私のセナリオを機能させる方法はあります-私はそれを少し書き直してもかまいませんが、FluentValidationに私のhtmlを書いてもらいたいです。
私のフォールバックソリューションは、属性を使用して正しいHtmlを生成するために独自のHtmlヘルパーを作成することですが、FluentValidation、jquery検証、または2つの間のmvcのリンク。
jquery - モデルのコレクションに対するAdditionalFieldsによるリモート検証
ビューにモデルのインスタンスが 1 つしかない場合、リモート検証は正常に機能します。
問題は、私のビューがモデルのコレクションを扱っているときです。ここに私のモデルがあります:
私の見解では、私は持っています:
これはフォームを生成するのにかなり長い道のりです。誰か私のために構文を改善してもらえますか?
次の html フォームが生成されます。
上記の html はかなりよく見えますが (コレクションの各モデルは一意の ID と名前を持っています)、リモート検証の追加フィールドには問題があります。
2 番目の行でリモート検証が開始されると、最初の行の ID が取得されます。
asp.net-mvc-3 - mvc3控えめなリモート検証で再検証を強制する
これは従来のログイン フローです。ユーザーは「新規ユーザー」または「既存ユーザー」を選択できます。ユーザーが新しい場合は、ログイン ボックスの名前をサーバーに対して検証して、ユーザー名が一意かどうかを確認する必要があります。既存のユーザーの場合は、ユーザー名が既に取得されていることが予想されるため (もちろん)、このチェックはスキップされます。
ビューモデルに [Remote] 属性を追加し、新規/退出ユーザー用のラジオボタンを「追加フィールド」として追加しました。このようにして、リモート検証は、既存のユーザーの場合は true を返し、そうでない場合はデータベースをチェックして、ユーザー名が使用されているかどうかを確認します。
ユーザー名を入力した後 (そしてリモート検証が実行された後)、ユーザーがラジオボタン (新規/既存) を変更することを決定した場合を除いて、これはうまく機能します。リモート検証は、ユーザー名が変更された場合 ([Remote] 属性を持つプロパティ) にのみ自動的に実行されるため、ラジオボタンのみを変更しても、再度実行されることはありません。
だから私の問題は、リモート検証を強制的に再度実行するにはどうすればよいですか? ユーザー名入力フィールドで変更/フォーカス/ぼかしイベントをトリガーして通常のハックを試みましたが、呼び出しはトリガーされません。ラジオボタンに同様の [Remote] を追加することを検討しましたが、同じ絶対位置に配置された 2 つの同じように見えるエラー メッセージにより、事態が非常に複雑になります。
再検証をトリガーする方法はありますか?