0

実装する必要のあるすべてのメソッドを持つIDataErrorInfoを実装する検証クラスがあります。

1つは

 public string this[string columnName]
        {
            get 
            {
            }
        }
       return "";

このswitchステートメントでは、フォームの検証がいくつかあります。

今、私は自分のフォームの多くがまったく同じ検証のものを必要としていることに気づきました。

したがって、検証をさらに追加する必要がある場合は、「IDataErrorInfo」を実装する新しいクラスを作成して、追加の評価を追加します。

次に、ビューで私はこのようなことをします

CoreValidation coreReg = new CoreValidation();
 try
            {
                UpdateModel(coreReg, regForm.ToValueProvider());

            }
            catch
            {

                return View();
            }

            MoreValidation moreReg = new MoreValidation();

            try
            {
                UpdateModel(moreReg , regForm.ToValueProvider());

            }
            catch
            {

                return View();
            }

成長し続ける可能性のある2つの別々のtrycatchステートメントが必要なという事実が気に入らないだけです。「コア」と「もっと」を取り、これらのどちらにも当てはまらない検証を追加する必要がある場合は、別のトライキャッチを検討しています。

「CoreValidation」クラスに移動して、switchステートメントとPropertiesを抽出し、新しいクラスに配置しようとしました。

私の計画は、そのクラスとメソッドをswtichステートメントで呼び出すことでした。したがって、「More」検証クラスでは、これを使用します

public string this[string columnName]
        {
            get 
            {
               CoreValidtion(columnName); // this would contain the switch statement

              //add another switch here with extra validation.
            }
        }
       return "";

そうすると、try catchは1つだけになり、すべてが同じメソッド(CoreValidation)を呼び出すため、コードを複製することはありません。

しかし、updateModelはこれを理解できないようです。UpdateModelがセットアップに必要なものをセットアップしようとすると、プロパティメソッドが見つからないため、次のようなすべてのプロパティが見つかります。

「UserName」はすべてnullに設定されています。

では、どうすればやりたいことができますか?

ありがとう

4

1 に答える 1

0

いくつかのサンプルasp.netmvcプロジェクト、特にnerdinnerとcontactmangementの例を見て、これらの例で検証がどのように行われるかを確認することをお勧めします。これらの例は、検証に関する非常に明確なガイドを提供します。

これらのサンプルプロジェクトをここにリストする投稿がありました。

于 2009-08-10T19:59:37.253 に答える