1

これを処理する方法が少し失われていますが、私はこれをどの方向に向けるべきかについてアイデアを探しています。MVCのビューに応じてバリデーションを処理する方法が失われた

私は、学校のグループの登録を処理するASP.Net MVC 3 w/Razorサイトを開発しています。登録プロセスの開始時に、ユーザーはどの学校に登録しているかを尋ねられます。彼らが登録している学校は、どの情報が必要かを決定します(ある学校はSSNが必要な学校で、もう1つはSSNが必要ですが、もう1つはSSNが必要です。私はSQLにLINQを使用しており、LINQからSQLに生成されたモデルをビューモデルとして使用しています。可能であれば、私はサイトの残りの部分で属性を使用して控えめな検証を行ってきましたので、私はこれをやり続けていきたいと思います。だから、彼らが行っている学校に応じて、モデルの財産を必要とするようにするにはどうすればいいですか?

私が考えることのできる解決策の1つは、各学校のビュー(または一連のビュー)を持たせることです。どのように検証するかは、どのビューが使用されているかに依存しますが、控えめな検証でそれをどうやって行うのか。

または、すべての学校で同じビューを使用することもできますが、カスタムバリデーター(JavaScript側とサーバー側の両方)にSchoolIDを取得する方法を理解できる場合は、カスタムバリデーター<RequiredForSchools(requiredSchoolIDs as Integer())>が必要です。

答えて

0

いくつの変数がありますか?あなたはそれを数本、または10本以下に凝縮できますか?その場合、それぞれのビューモデルを使用することができますが、バリエーションの数が少ない方が簡単です。あなたは学校に基づいてあなたのビューモデルを選択します。

バリエーションが多すぎる場合は、おそらく、決定する独自の検証属性を記述する必要があります。

+0

約20変数です。ええと、各学校のLINQ to SQLのモデルを単純に継承し、必要に応じてRequired属性を適用できるのだろうかと思います。 – MHollis

+0

合計20のバリエーションがありますか? 20種類の変数、20〜20種類のバリエーションのように?後者の場合は、検証を行うカスタム検証属性を作成することをお勧めします。 –

+0

唯一5つの学校やバリエーションがあるので、それぞれ20のプロパティを持つ5つのクラスが必要ですが、それらのプロパティの一部は普遍的な(つまり名、姓など)必要ですが、それらを残して親クラス。 LINQ to SQLクラスの派生は非常に有用ではありませんが、DataContextはそれを受け取りませんし、親から子へのキャストも機能しません。うーん...もし私がリポジトリのパターンに切り替えると、私はできますが、それは私のプロジェクトにとって大変な作業です。また、私自身の妥当性確認の属性を作成することに関して、私はまだ問題のschoolIDを取得しています。 – MHollis

関連する問題