問題タブ [remote-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.

0 投票する
5 に答える
8396 参照

jquery - 目立たないjqueryリモートバリデーターを取得して非同期を実行する方法..?

MVC3 アプリで、jquery の控えめな検証と [Remote] バリデーターを使用したビュー/モデル: リモート検証中、および有効なフォームがサーバーに送信されたときに、送信ボタンを無効にして待機アイコンを表示しようとしています。IE8で試すまでは、釘付けだと思っていました。

問題は、フォームが無効なときに GC と FF がフォームの送信イベントを発生させなかったため、このイベント中に送信ボタンを無効にしたことです。ただし、IE8 はフォームが無効な場合にこのイベントを発生させるため、ユーザーはフォームを再度クリックできなくなります。(IE8 はフォームを送信しませんが、イベントは発生します。)

送信ボタンのクリックイベントに関数をつけてみました。そこで、送信ボタンを無効にし、待機アイコンを表示して、次のようにしました。

問題は、ajax セットアップ呼び出しが実際には非同期をオフにしないことです。クリック機能の外に移動すると機能しますが、すべての非同期が無効になります。代わりに、リモート検証アクション メソッドにブレークポイントを設定することによってテストされた、ページはすぐに "true" をアラートします。

何か案は?

追記:

言い忘れていましたが、IE8 では、送信イベントは、問題のテキスト ボックスがクライアントで発生する可能性のある検証に失敗した場合にのみ発生します。たとえば、required または regex に失敗すると、submit() が起動されます。リモート検証アクション メソッドの場合、それは起動されません。ただし、クライアントの検証に失敗するとすぐに、後続のリモート検証でも IE8 送信イベントがトリガーされます。

Russ Cam への返信 (コメント #1)

ビューモデルの関連コードは次のとおりです。

レンダリングしたものを見ていただけてうれしいです<form>。form タグと入力要素は次のようになります。

今まで novalidate="novalidate" 属性を見たことがありません。cshtml ファイルでは次のようになります。

それが違いを生む場合、私は偽造防止トークンも使用しています。ありがとう。

0 投票する
1 に答える
308 参照

asp.net-mvc-3 - ビューモデルのRemoteAttributeと対応するアクションメソッド(MVC3)のActionNameAttribute

RemoteAttributeを使用したリモート検証は、次のいずれかを行わない限り機能しないことを発見しました。

  1. リモート検証のアクションメソッドに[ActionName]属性がない、または
  2. リモート検証のアクションメソッドには、実際のアクションメソッド名と大文字と小文字を区別しない一致である[ActionName]属性があります。

次の場合、MVCはInvalidOperationException「リモート検証用のURLが見つかりませんでした。」をスローします。

なぜですか?それが違いを生むなら、私はT4MVCを使用しています。

0 投票する
1 に答える
2113 参照

jquery - ASP.Net MVC3:リモート検証呼び出しが起動しない

特定のフィールドのデータベース内の既存の値をチェックするようにリモート検証が設定されたデータ入力フォームがあります。

何が起こるかです:

  1. 作成ページ(データ入力フォーム)に移動します。フィールドに値Xを入力します。

  2. フィールドはフォーカスを失います。リモート検証が呼び出されます。Fiddlerが呼び出しを表示します。

  3. [保存]をクリックします。レコードが保存されます。ページがインデックスページに切り替わります。

  4. もう一度[ページの作成]に移動します。フィールドに値Yをもう一度入力します。

  5. フィールドはフォーカスを失います。リモート検証が呼び出されます(Fiddlerごと)。

  6. [保存]をクリックします。レコードが保存されます。ページがインデックスページに切り替わります。

  7. [ページをもう一度作成]に移動し、フィールドにX(もう一度)を入力します。

  8. フィールドはフォーカスを失います。何も起こりません。リモート検証の呼び出しはありません(Fiddlerごと)。

  9. [保存]をクリックします。リモート検証の呼び出しはありません。ページはレコードを保存しようとしますが、データベースはそれを返します。

これは、[作成]ページが、フィールドの以前の値もXであったことを記憶していて、その間に他のページにアクセスしたにもかかわらず、変更されていないため再検証されていないかのようです。

モデルを作成ビューに渡していない:そのフィールドに変更されている(または変更されていない)以前の値があるという考えがどこで得られているのか想像できません。

私の知る限り、OutputCache使用されていません。重要な場合は、IE8を使用しています。

0 投票する
1 に答える
19322 参照

asp.net-mvc - リモート検証で複数のAdditionalFieldsを使用する方法 - asp.net mvc

ASP.NET MVC 4 (C#) アプリケーションでリモート検証を使用して、FirstName、LastName、および電子メール アドレスの組み合わせの重複を検証する必要があります。リモート検証は、次のような 1 つの追加フィールドのみを受け入れます。

組み合わせに EmailAddress を追加するにはどうすればよいですか?

0 投票する
1 に答える
641 参照

asp.net-mvc-3 - ASP.Net mvc 3.0 リモート検証

私はこの問題を抱えています:

2 つの属性の合計が 100 を超えることができないモデルを検証しています。このために、次のように使用しています。

私のモデルでは、これらは私の属性です:

私の ValidationController は次のとおりです。

私の見解は次のとおりです。

それはうまくいきます。問題は次のとおりです。ユーザーによって挿入された が でありprevTextWidth、ユーザーが55に挿入46するとします。textboxWidthここでは、 で検証が失敗し、textboxWidth強調表示されます。

しかし、ユーザーが prevTextWidth の値を 54 に変更するとどうなるでしょうか? 検証はt fail, but thetextboxWidth will continue to be highlighted and not valid. The only way to make it valid is to re-insert the value oftextboxWidth` を獲得しました。

2 つの属性を同時に検証し、2 番目の値を再挿入して有効にしない方法はありますか?

前もって感謝します、

マティアス

0 投票する
3 に答える
1504 参照

asp.net-mvc-3 - ASP.NET MVC 3: モデル レベルのクライアント側またはリモートの検証

MVC 3 編集ページでモデル レベルの検証を行う必要があります。(具体的には、フィールド A またはフィールド B のいずれかが入力されていることを確認する必要がありますが、両方ではなく、両方でもないことを確認する必要があります。)

クライアント側の検証とサーバー側の検証を実行したいと考えています。これは、リモート検証を使用するか、重複する検証コードを実装することを意味します。私はどちらでもOKです。

独自のサーバー側のモデルレベルの検証を展開することに関する多くの投稿を読みましたが、クライアント側の検証の実装も扱っているものはありません。(私にはわかりません -- 誰かが私に教えてくれると確信しています -- モデルレベルのクライアント側の検証が jQuery 検証で簡単にセットアップできるかどうか.)

Remote 属性はプロパティ レベルのみであるため、独自のリモート検証をゼロから実装する方法についても読みました。

私はこの質問を読みましたが、これは私のものと同じですが、本当に適切な唯一のリンクは、回答者が言っていることを言っていないようです。

それで、私の質問: リモート コンポーネントの有無にかかわらず、サーバー + クライアント モデル レベルの検証を実装するための簡単で比較的労力の少ない方法はありますか? そして、これを説明している素敵なブログ投稿やウェブページはありますか?

0 投票する
0 に答える
697 参照

ajax - MVC3Razor-リモート検証が起動しない

「パスワードを忘れた」メカニズムを実装しようとしていますが、パスワードをリセットしてメールを送信する前に、ユーザー名とメールアドレスを確認したほうがいいと思いました。これは私がしました:





クライアント側でもサーバー側(送信時)でも、「リモート」検証を起動できません。ただし、「必須」の検証は期待どおりに機能します。

行き詰まりました。解決策を提案してください。よろしくお願いします。

0 投票する
1 に答える
239 参照

asp.net-mvc-3 - HTMLヘルパーまたはEditorTemplateで使用するRemoteValidationの詳細はどこにありますか?

私は現在、特定の形式、つまり大文字(DD-MON-YYYY)でDateTimeフィールドを表示しているMVC3サイトを持っています。

このために次のDateTime.ascxEditorTemplateを作成し、カスタムjavascriptによって取得されるカスタムdata-datepicker属性を追加して、JqueryUIDatepickerをフィールドに追加します。<%@ Control Language = "C#" Inherits = "System.Web.Mvc.ViewUserControl"%>

私が抱えている問題は、EditorTemplateを使用すると、入力ボックスのすべてのRemoteValidation属性が失われることです。明らかに、私はそれらを具体的に追加していないからです!

リモート検証とJQueryUI日付ピッカーを使用して入力ボックスを作成できるように、モデルまたはモデルメタデータ内で必要な情報を見つけることができる正しい方向に私を向けることができますか?

これは私が現在EditorTemplateから得ているものです:

これは私が最終的に欲しいものです:

注意すべき点がいくつかあります。

  • 必要に応じて、HTMLHelperを使用できます。私はEditorTemplateに限定されていません
  • さまざまな日付に使用されるさまざまなRemoteValidationアクションがコントローラーにあります。したがって、検証URLをハードコーディングすることはできません。モデルのフィールドに装飾されているRemoteAttributeから値を検索する必要があります。
  • 同様に、data-val-remote値も、モデルフィールドのRemoteAttributeに基づいてロードする必要があります。

誰かアイデアはありますか?

0 投票する
2 に答える
4448 参照

asp.net-mvc-3 - MVC3 リモート検証が開始されませんか?

問題を説明するために、非常に単純なテスト プロジェクトを作成しました。

私のモデルクラス

私のコントローラー

そして私の見解

そして私のweb.config

ここには本当に素晴らしいものはありません。3 つのプロパティを持つモデル クラスがあります。1 つ目は必須に設定され、2 つ目はリモート検証です。アクション メソッドを適切に作成したと思います。ブレークポイントをValidateProperty2機能するように設定しましたが、呼び出されることはありません。

私も FireBug を使用しました。クライアント側がサーバー側を呼び出そうとさえしないのと同じことです。

ここのコードの何が問題になっていますか?

編集 1: 何かを得たと思います。リモート検証は、コントロール (テキスト ボックスなど) に値が含まれている場合にのみ起動します。空のコントロールが検証をトリガーすることはありません。私の場合、実際にはより複雑なロジックを実装しようとしています。コントロールテキストが空の場合でも (他のプロパティの値をチェックするために) 検証を実行する必要があります。それは可能ですか?

0 投票する
1 に答える
1472 参照

asp.net - MVC3 リモート検証

現在、選択したユーザー名が既に存在する場合にユーザーに警告されるように、MVC3 を使用してリモート検証をセットアップしています。最も重要な部分を除いて、すべてがセットアップされ、正しく機能しており、エラーメッセージは表示されていません。フォームを送信すると、関連するモデル状態エラーが追加されてページが更新されると、エラー メッセージが表示されます。

Jsonの結果でモデル検証の概要を更新する方法はありますか?