問題タブ [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 - MVC3によって生成されたHTML5フォーム属性は目立たない検証で大丈夫ですか?
私はMVC3の目立たない検証を見てきました。
これらのような属性は、フォーム入力要素に付加されます。
MVC3の目立たない検証について読んだブログ投稿には、有効なHTML5であると書かれています。ただし、W3C HTML5仕様を確認しましたが、これらの属性は表示されません 。http://www.w3.org/TR/2011/WD-html5-20110525/
クライアント側のjQuery検証を可能にする、これらの属性が何をするかというアイデアが好きです。しかし、それらは有効なHTML5ですか?それとも、ブラウザや検索エンジンで問題が発生するのでしょうか。
c# - MVC3の目立たない検証がカスタムDataAnnotations属性で機能しない
現在、DataAnnotations.RequiredAttributeの単純なラッパーであるカスタム属性があります(後で拡張しますが、この概念実証を今のところ機能させようとしています)。ただし、これはMVC3の目立たない検証では機能しません。
本当に、それは非常に単純な問題です。
これが私のカスタム属性です:
次に、2つのモデルプロパティを示します。1つはカスタム属性を使用し、もう1つはDataAnnotations属性を使用します。
Razorコードは次のとおりです。
そして、これが結果の出力です:
ご覧のとおり、FirstName(DataAnnotationsを使用)はバリデーターに必要なhtml属性でレンダリングされますが、LastName(CustomValidationAttributesを使用)にはとがありませdata-val-required
んdata-val attributes
。
私は何か間違ったことをしていますか、それともこれはMVC3の目立たない検証ではサポートされていませんか?
前もって感謝します。
jquery - jquery ajax postでmvc 3を使用して目立たない検証を行う際の問題
MVC3 で検証を機能させるのに苦労しています。ページを直接ロードするだけでは問題なく動作しますが、jquery AJAX POST を使用すると検証されません。
このフォームは を使用してロード$('#modal-dialog').load('/DartsMVC/Restaurant/Edit/13')
されます。これはレンダリングされた HTML です:
AJAX POST は、フォーム/送信をインターセプトすることによって使用されます。モーダル ダイアログがポップアップし、投稿が完了すると自動的に閉じます。投稿を送信する前にフォームを検証したい:
これを行うことで何かを壊しましたか? .valid()
常に true を返します。
私のweb.configには次のものがあります:
私のページのソースには次のものがあります。
そして、私のモデルは次のとおりです。
さらに調査した結果、動的コントロールと関係があると思われます。
- data-val 属性が存在するため、フォーム スコープの問題ではありません
- $.validator.unobtrusive.parse('#formid') を呼び出してみます。それでもうまくいかない場合は、次の最後の手段を使用します。
- http://xhalent.wordpress.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/
jquery - 子コレクションを使用した ASP.NET MVC 3 控えめな jQuery クライアント側検証
関連する質問:
ユーザーが追加できるアイテムのコレクションをレンダリングする ASP.NET MVC ビューがあります。
「ChildRow」パーシャルは次のとおりです。
行を表す部分を取得するために jQuery を使用しています:-
私が抱えている問題は、jQuery によって追加された行に対してクライアント側の検証が機能しないことです。私のスクリプトからわかるように、ajax 呼び出しの後にフォームに対してバリデーターを実行しています。私が見回す限り、問題は Html.BeginForm() 呼び出しが ajax パーシャルにないため、検証属性が入力要素に追加されていないことです。つまり、行を追加した後にマークアップを表示した場合:-
ページの読み込み時に存在する入力は次のようになります:-
ajax 経由で追加された入力は次のようになります。
明らかに、フォームの性質上、Html.BeginForm 呼び出しを部分ビューに移動することはできません。ページが ajax 経由で読み込まれているため、パーシャルの FormContext をハックすることもできません。
クライアント側の検証を有効にする別の方法はありますか?
編集
以下のカウンセラーベンの回答に従って、FormContext を設定すると、属性が正しくレンダリングされるようになりましたが、検証はまだ機能していません (新しい行を追加してテキスト ボックスを空白のままにした場合、アプリケーションが最初に気付くのは、 Edit POST アクションがヒットします)。
私はいくつかのテストを行い、 $.validator.unobtrusive.parse 関数が確実に呼び出され、parseElement 関数が確実にテーブル内の新しい入力数に対して正しい回数呼び出され、行 "info.attachValidation( );」さらに下の解析関数は間違いなくヒットしています。それは私が持っている限りです。まだテスト中です。
c# - Ajax呼び出し後にMVC3の控えめな検証が機能しない
OK、これが取引です。この問題に関連するSOに関する投稿をいくつか見ましたが、何も機能していません。
基本的に、部分ビューからロードされているドロップダウンを選択しました。以前に選択したドロップダウンに基づいて、後続の各ドロップダウンのコンテンツをフィルタリングしようとしています。
divコンテナの部分ビューへの呼び出しを配置し、ページをロードすると、データアノテーション、主にRequired属性からの検証が正常に機能します。
ただし、ここで設定したものと同じパーシャルをAJAX経由でロードしようとすると、必須の検証が機能せず、その後誰でもフォームとKABOOMを投稿できます。
Successコールバックでは、クライアント側のバリデーターにフォームを再解析させる必要があると言われているのを見つけました。私はそれを試していますが、機能していないようです。
私はこのように見えるビューを持っています...
部分ビューは非常に単純で、基本的に次のようになります...
繰り返しますが、RenderPartialだけの場合、検証は正常に機能しますが、ajaxを介して実行しようとすると、検証は終了します。「RebindingValidation」アラートが発生しますが、$。validator.unobtrusive.parse( "#frmPASSWORD"); 何もしていないようです。
誰かが私が欠けているものを手伝ってくれる?よろしくお願いします。
<=======================更新1======================== =====>
OK、$。validator.unobtrusive.parse( "#frmPASSWORD");を追加してみました。ドキュメント準備完了イベントの部分ビューの下部にあり、それも機能していないようで、基本的に何も変更されていません。フォームを送信できました。
私はここに投稿を見つけました:http://xhalent.wordpress.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/は、MVCバージョンのjqvalidationがフォームにすでにそれにバインドされた検証ルールは、.validator呼び出しを無視するだけです。この紳士が使用したスクリプト拡張機能を実装しました。検証では、新しい拡張機能を使用してフォームに再バインドしています。フォームにhtmlを追加して新しい拡張機能を呼び出すことでこれをテストでき、新しいテキストボックスに再バインドされます。
ただし、これで問題が完全に修正されるわけではありません。私はFirebugを使用して、ajax呼び出しから戻ってきたフィールドの実際のコンテンツをチェックしましたが、非常に奇妙なことに気づきました。
RenderPartialを使用してアクションを呼び出すと、次のselectが出力されます。
ただし、同じ正確なコントローラーアクションに対してajax呼び出しを行うと、これが返されます。
スクリプトタグを部分ビューにも追加しようとしましたが、問題は解決しませんでした。ajax呼び出しが目立たない検証タグを削除する理由はありますか?
<=======================更新2======================== =====>
さて、何が起こっていたのかというと、ドロップダウン用のエディターテンプレートがあり、選択リストを取得してhtml選択に変換しました。データ検証属性を取得してエディターテンプレートに書き出すには、フォームコンテキストが必要であるという投稿を見つけました。Html.RenderPartialはフォーム内で実行されていたため、エディターテンプレートには操作するフォームコンテキストがありました。ajaxを介してパーシャルを呼び出そうとしたとき、操作するフォームコンテキストがなく、文句を言う代わりに、データ検証属性を書き出さなかっただけです。SelectListDropDownのエディターテンプレートに新しいフォームコンテキストを追加すると、問題が修正されました。
asp.net-mvc - MVC RegularExpression アノテーションの異なる結果クライアント - サーバー
目立たないクライアント側の検証を使用しています。
次のデータ注釈を持つViewModelがあります
問題は、クライアント側の検証が正常に機能し、たとえば 25:20 ではなく 12:20 をフィールドに入力できることです。
しかし、サーバーで ModelState.IsValid に問い合わせると、フィールドでエラーが発生します。
問題は正規表現のコロンの前にあるようです。表現を変えると
それは正常に動作します。
しかし、私が持っている場合
それはまだサーバー上でそれを受け入れません。変更は、クライアント側の検証で期待どおりに機能します。
クライアント側の正規表現解析とサーバー側の違いはありますか? ちょっとバグっぽい?!
ありがとう
asp.net-mvc-3 - 1つのプロパティで2つのリモート検証属性を使用することは可能ですか?
ビューモデルの1つのプロパティで2つのリモート検証属性を使用することは可能ですか?
私ができるようにしたいのは、2つのチェックを実行することです。1つは特定のユーザーIDがDBに存在すること、もう1つはユーザーがシステムにアカウントをまだ設定していないことです。
両方のテストを含むカスタム属性をいつでも作成できると思いますが、可能であれば、すぐに使用できる機能を使用して、検証をチェーン化することをお勧めします。
検証がどのように失敗するかに応じて異なるエラーメッセージを表示する必要があり、検証結果とともにエラーメッセージを返すことができないため、ロジックを1つのJsonResultに実際に組み合わせることができません。
asp.net-mvc-3 - MVC3、Ajax、およびクライアント側の目立たない検証を備えたモーダル フォーム
タイトルにあるものの組み合わせを一緒に機能させることができません。さまざまな質問を読みましたが、私がやろうとしているすべてをカバーするものは見つかりませんでした。
モーダル ウィンドウに jqModal を使用しています。私は Ajax.BeginForm を使用しています。私のモデルはなど[Required]
で飾られています。[Display(...)]
このようなものはすべて、を使用してページに配置されています@Html.RenderAction(...)
OnBegin
私が ajax 呼び出しを使用しているかどうかに応じてOnComplete
、クライアント側の検証を取得しない (更新が行われない) か、モーダルがダイアログなしでページ全体が「モーダルアウト」された状態でスタックします。場所。しかし、実際に私が望むのは、クライアント側またはサーバー側の検証エラーが発生した場合にモーダルをそのままにしておくことです。
このサイトは、javascript が利用可能/有効化されていなくても機能する必要はありません。
頭:
モデル:
エディター テンプレート (これにはいくつかの拡張メソッドが含まれていますが、問題とは関係がないため、無視してください):
ビュー (ページにこれらの多くがあり、繰り返される可能性があるため、一意性のために Guid を使用しています):
コントローラーのメソッド:
長い投稿で申し訳ありませんが、他の人がそれは悪いことではないと言っているのを見ました! リクエストがあれば、追加のコード/情報を投稿していただければ幸いです。プロジェクトのいくつかの場所からコピー/貼り付けしたため、何かを見落としている可能性があります。
前もって感謝します。
model-view-controller - 控えめなjqueryを使用したMVC3.0で検証メッセージがクリアされない
作業中のWebアプリに単純なクライアント側の検証を実装しようとしていますが、実際の検証メッセージが機能しています。ただし、誤った入力を修正してコントロールがフォーカスを失うと、検証メッセージがクリアされず、無効なクラスがコントロールに残ります。関連するビューコードは次のとおりです
そしてビューモデル属性
前述したように、コメントが長くなりすぎてコントロールがフォーカスを失うと、期待どおりにエラーメッセージが表示されます。ただし、エラーが修正されると、エラーメッセージは消えず、コントロールは赤のままになります。_Layoutページには、関連するスクリプトファイルが正しい順序で含まれており、構成ファイルにはappSetting変数が正しく設定されています。何が悪いのか、どこで問題を探すべきなのか、何か考えはありますか?アドバイスありがとうございます。
asp.net-mvc-3 - MVC3 カスタムの控えめな検証 - チェックボックスからの強制的な検証
カスタム検証に使用される次のクラスがあります。
私のViewModelは次のとおりです。
強く型付けされたビューがレンダリングされると、すべて正常に動作するように見えます。PropABC または PropXYZ が選択されている場合は、TestField の値を入力する必要があります。クライアント側とサーバー側の両方の検証が機能します。
ただし、次の一連のイベントがあるとします。
- PropABCをチェック
- フォームを送信
- TestField のクライアント側検証が必要です
- PropABCのチェックを外す
- クライアントの検証が再起動せず、フォームが送信されるまで検証メッセージが残る
#5 を解決するために、私は通常、jquery onready を介してクリック イベントをチェックボックスにアタッチし、検証を再起動します。
MVC3 + 目立たない + jquery を指定して、クライアント側の検証を手動で強制する推奨/推奨方法はありますか?