ASP.NET MVCで検証を実装する方法のヒントのほとんどは、モデル(モデルとコントローラの間のサービスレイヤを構築するか、検証属性を使用してモデルのプロパティを修飾する)を中心にしているようです。ASP.NET MVCのViewModelsの検証
私のアプリケーションでは、コントローラとビュー間のすべての通信にViewModelsを使用します。
「EmailAddress」というプロパティを持つ「LoginViewModel」というログインページ用のViewModelがあります。
ユーザーが電子メールアドレスを入力して送信をクリックすると、このViewModelが入力され、コントローラに送信されます。コントローラでは、電子メールアドレスが検証されます。
有効なメールアドレスで、ユーザーはシステムに登録されているドメインのユーザーである必要があります。
これにバリデーションを追加する便利な方法はありますか?私はViewModel自体に検証を入れるべきですか?それともコントローラーに残っていますか?
素晴らしいアイデア、Keith!現時点では、ViewModelsにモデルを埋め込むのと同じ戦略があります。 ModelとViewModelの両方で同じ方法で検証を実装でき、xValなどのJSフレームワークがどちらかとシームレスに連携できる場合はどうすればいいですか。 これは最も柔軟な方法です。私は検証がモデルに専ら結びついているとは思わない。 – Jonathan
私はまた、xValを含む組み込みモデルクラスを持つカスタムビューモデルを使用しています。しかし、モデルのプロパティのサブセットのみを含むビューモデルが必要な場合があります。私は現在、これらのモデルをマップするAutomapperを探しています。それは正常に動作しますが、私はそのシナリオでxValを使用する方法は?メタモデルオブジェクトにviewmodelの一部ではないプロパティが含まれる場合、AssociatedMetadataTypeTypeDescriptionProviderがスローするため、ViewModelをMetaData属性でデコレートすることはできません。 Automapperを使用している場合は、この問題の解決方法を知りたいと思います。 –