2011-08-16 41 views
3

リモート検証を使用して、ユーザークラスの電子メールとユーザー名フィールドで、ユーザーがデータベース内に既に存在するユーザー名や電子メールを入力しないようにします。MVC 3リモート検証、重複チェックの問題(編集ビュー)

これは、作成ビューでうまくいきますが、私が編集ビューで実行する明らかな問題は、特定のユーザーの変更を保存しようとすると、ユーザー名と電子メールで同じ検証メッセージが表示されますすでにデータベースに存在しています!したがって、自分のメールとユーザー名が既に存在するため、誰でも編集できなくなります。

私は周りを見回していて、似たような問題が見つからないことに驚いていました。私は、ページの作成時に名前/電子メール/値の検証を複製する例が多数ありましたが、編集ビューでは避けられない問題は何もありません。

これに関するすべてのヒント/ヒントは非常に高く評価されます。おそらく、検証を作成ビューでのみ動作させる方法がありますか?理想的には、私は妥当性確認のチェックでユーザーの名前と電子メールを除外するだけで、編集ビューで妥当性検査を行います。

ありがとうございました!

答えて

3

ビューモデルを使用する必要があります。これらは、ビューの要件を満たすように特別に設計されたクラスです。コントローラのアクションは、ビューモデルのみをビューに受け渡し、ドメインモデルには渡しません。つまり、挿入と編集の2つのコントローラアクションと、それぞれの検証ルールを持つ2つの対応するビューモデルがあります。

+0

私はそれが彼が求めていることに関連しているとは思わない。 –

+0

あのトリックはダーリンに感謝しました。 – DevDave

+0

私はenterを押したときにコメントを入力しました!ビューモデルを使用すると、さまざまなビューで発生したことを分けることができました。その後、他のメールに対して妥当性を確認しながら、編集ビューでオリジナルメールを除外することができました。もう一度ありがとう – DevDave

1

問題を回避する方法は、2つの異なる検証方法があります。 1つの引数(ユーザー名)と1つは2つの引数(新しいユーザー名、元のユーザー名)をとります。 Editメソッドは、元のユーザー名と一致しない限り、新しいユーザー名を検索する2引数メソッドに対して検証します。

+0

この提案と上記の答えのcominationは私の問題を解決しました。ありがとうございました! – DevDave

関連する問題