問題タブ [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.
asp.net-mvc-3 - mvc3控えめなリモート検証で再検証を強制する
これは従来のログイン フローです。ユーザーは「新規ユーザー」または「既存ユーザー」を選択できます。ユーザーが新しい場合は、ログイン ボックスの名前をサーバーに対して検証して、ユーザー名が一意かどうかを確認する必要があります。既存のユーザーの場合は、ユーザー名が既に取得されていることが予想されるため (もちろん)、このチェックはスキップされます。
ビューモデルに [Remote] 属性を追加し、新規/退出ユーザー用のラジオボタンを「追加フィールド」として追加しました。このようにして、リモート検証は、既存のユーザーの場合は true を返し、そうでない場合はデータベースをチェックして、ユーザー名が使用されているかどうかを確認します。
ユーザー名を入力した後 (そしてリモート検証が実行された後)、ユーザーがラジオボタン (新規/既存) を変更することを決定した場合を除いて、これはうまく機能します。リモート検証は、ユーザー名が変更された場合 ([Remote] 属性を持つプロパティ) にのみ自動的に実行されるため、ラジオボタンのみを変更しても、再度実行されることはありません。
だから私の問題は、リモート検証を強制的に再度実行するにはどうすればよいですか? ユーザー名入力フィールドで変更/フォーカス/ぼかしイベントをトリガーして通常のハックを試みましたが、呼び出しはトリガーされません。ラジオボタンに同様の [Remote] を追加することを検討しましたが、同じ絶対位置に配置された 2 つの同じように見えるエラー メッセージにより、事態が非常に複雑になります。
再検証をトリガーする方法はありますか?
asp.net-mvc - パラメータ名を変更する必要がある場合、リモート検証メソッドを再利用するにはどうすればよいですか?
2 つの異なるビューのモデルとして使用している 2 つのクラスがあります。2 番目のクラスには最初のクラスのインスタンスが含まれていることがわかります。1 つ目は、リモート検証属性を含みます。
これらの検証がブラウザーでトリガーされると、ビューが使用したクラスに応じて 2 つの異なる要求が行われます。クエリ文字列パラメーター名が異なることがわかります。
2 番目の URL では機能しないアクション メソッドの現在のバージョンを次に示します。
2 番目の URL を使用すると、name パラメータは null になります。そのパラメーターに Bind 属性を追加してプレフィックスを追加できるはずだと読みましたが、これも機能していません。EmailRecipient.
ドットが必要な場合に備えて、プレフィックスを に設定してみました。念のため、Name に大文字の N を付けてみました。立ち入り禁止。これを追加すると、他の URL でも壊れます。
可能な解決策
メソッドで EmailRecipientViewModel のインスタンスを取得し、そのインスタンスの IModelBinder を作成して、いずれかの命名規則を探してインスタンスに割り当てることができます。これは、必要以上の作業のようです。
のオーバーロードを使用して@Html.EditorFor()
、htmlFieldName に「Name」を使用するように指示し@Html.ValidationMessage( "Name" )
、ValidationMessageFor
. これの唯一の欠点は潜在的な名前の競合ですが、それは大した問題ではありません。使用されているこのクラスのすべてのインスタンスに一意の名前を使用する必要があります。更新:実際、これを行うと、名前を変更したため、フォームを投稿すると問題が発生します。それは良くないね。
...
メソッドにパラメーターを持たせず、クエリ文字列に手動でアクセスできることがわかりました。これは非常に単純な解決策ですが、nice パラメーターが得られません。
これは簡単なので、おそらくこれを使用するだけです。しかし、私はすでにこの質問を入力しているので、もっと洗練された解決策はありますか?
asp.net-mvc - リモート検証はバグがあるようです
この状況を想像してください:
設定
デフォルトの MVC3 プロジェクトで、新しい複合型をAccountModels.cs
を次のようにRegisterModel
変更UserName
します。
コントローラーのUserNameExists
メソッドは次のとおりです。Validation
登録ビューで、GlobalAccount
代わりにモデルを使用しますRegisterModel
ユーザー名入力ボックスは次のようになります。
と
これにより、HTMLで次のような結果になります
デバッグ
FireBugを使用して何が起こっているかを確認すると...リモート検証は、属性IDの代わりに属性名を検証メソッド(1つ)に次のように送信しています。UserNameExists
Register.UserName
それ以外のRegister_UserName
だから私はこの値を取得することはできません...今まで:(
これは本当にバグなのか、それとも誰かがすでに発見したもので、Google で調べてもわからなかったのでしょうか?
実際の問題の簡単なイメージを次に示します。
c# - asp.net mvc 3 でのリモート検証の問題
私は人物モデルを持っています
これは私の UserNameExists メソッドです
Javascript を有効にすると問題なく動作しますが、JavaScript を無効にするとこのルールは適用されません...
どうしてこれなの?
助けてください。
予想される動作の編集:
msdnによると、Javacriptがなくてもこのルールを尊重する必要があります
- 必要に応じて、ブラウザでクライアント スクリプトを無効にし、ページを再度実行して、検証の制約に違反するデータを入力します。
無効なデータを含むフィールドを離れても、スクリプトが無効になっているため、検証エラーは表示されません。ASP.NET MVC は目立たない JavaScript を使用しているため、クライアント側のスクリプト エラーは表示されません。ただし、フォームを送信すると、サーバー側の検証が実行されます。(スクリプトを無効にしたブラウザーで Web アプリケーションをテストすることをお勧めします。)
asp.net-mvc-3 - オブジェクトのMVC 3リモート検証が機能しない
この質問はすでに何度も聞かれていることを認識しています。しかし、どの解決策もうまくいきませんでした。
問題:
私はオブジェクトを持っています:
そしてモデル:
そして私の行動:
検証が開始されると、複雑なオブジェクトであるため、次のような URL が送信されます。
明らかに、これは、パラメーター名がクエリ文字列名と一致しないため、アクションが日付を取得しないことを意味します。
私は広範囲に検索し、多くの提案を見てきました - 私はすべて試しましたが、どれもうまくいきませんでした. 私が試したのは次のとおりです。
バインド属性の使用
と
日付はnullとして返されます
モデルまたはオブジェクトをパラメータ タイプとして使用する
と
MyDate
常に MinValue として終了しますが、パラメーター (SomeModel または SomeObject) は null ではありません
何が間違っているのかよくわかりません。誰かが私を正しい方向に向けることができますか? 走る前に唱えなければならない呪文はありますか、それとも外が晴れている必要がありますか? これは、一般的なシナリオでは予想よりもはるかに多くの作業のようです。
validation - リモート検証成功応答のカスタム メッセージを表示する
リモート検証を使用して、asp.net mvc 3 アプリケーション (C#) の登録中にユーザー名が使用可能かどうかを確認しています。
MVC リモート属性検証を次のように使用しています。
次の 2 つの条件でメッセージを表示する必要があります。
- エラーメッセージ「ユーザー名が利用できません」を表示 - 失敗条件
- 成功メッセージ「利用可能なユーザー名」を表示 - 成功条件
次のような問題なく、失敗条件のメッセージを表示できます。
しかし、成功条件の場合、次のように (カスタム メッセージではなく) 応答で true を送信する必要があります。
リモート検証の成功条件のカスタム メッセージを表示するにはどうすればよいですか?
asp.net-mvc-3 - MVC3 リモート属性、実装方法は?
ソリューションの下にソリューションがあり、DomainModel と呼ばれるプロジェクトの 1 つがいくつかあります。そこでは、モデルやその他の主にインフラストラクチャを記述します。
今、私は自分の UI (ビュー、コントローラーなど) を行う WebUI と呼ばれる別のプロジェクトを持っています。
WebUI の特定のビューに実装する必要がある DomainModel プロジェクトで Remote 属性を使用したいと考えています。
私がDomainModelでそれを使用すると、コントローラーを認識しないというエラーが表示されます.WebUIの参照を追加すると、循環参照になるため、Vsが私を罵倒し始めるため、正しく認識されません。 .
これを実装する方法は?
これは、RemoteValidation を提供する私のコード Controller です
//DomainModel プロジェクトの実際のエンティティ
これは、WebUI.Models のリモート属性で拡張した後の私のエンティティです。
これが私の見解です
asp.net-mvc-3 - asp.net mvc3 でデータ注釈を使用してリモート検証中に ajax ローダー イメージを表示する方法
私のasp.net mvc3アプリケーションでは、データ注釈を使用してユーザーがすでに存在する場合、リモート検証を行っています。それは完全に機能しています。リモート検証(ajaxリクエスト)が行われているときに、フォームの入力フィールドの横にajaxローダーの画像を表示できる理由があるかどうか疑問に思っていました。
私を助けてください
ありがとう
jquery - MVC3のロバストでないリモート検証の読み込みインジケーター
ユーザー名の可用性を確認するために、MVC3の堅牢でないリモート検証を行っています。
正常に動作しますが、検証メッセージの読み込みにはかなりの時間がかかります。移行中にスピナー/ユーザー名の利用可能なチェックメッセージを表示する方法はありますか?