1

3 層アプローチの MVC 3 アプリケーションがあります。私のデータ層には、edmx ファイルと、edmx ファイルが変更されるたびに基本的な DataAnnotations を使用してエンティティを生成する t4 テンプレートが含まれています。

さらに、既存のエンティティとプロパティの追加の検証を可能にするために、以下を利用しています。これにより、自動生成された DataAnnotations を独自の注釈と組み合わせることができます。

[MetadataType(typeof (PersonMetaData))]
public partial class Person
{
}

public class PersonMetaData
{
    [RegularExpression(@"(\w|\.)+@(\w|\.)+", ErrorMessage = "Email is invalid")] public string Name;
}

さらに進んで、次の記事を見つけましたhttp://www.howmvcworks.net/OnModelsAndViewModels/ExtendingTheModelBinderForEnhancedValidation

これにより、既存の ASP.NET MVC ロジックを使用して、必要に応じて独自の検証メソッドを実装できます。この例は私にとってはうまくいきます。

残念ながら、私は 3 層アプリケーションを持っていて、(データ層ではなく) ビジネス ロジックでエンティティを検証したいので、循環依存関係を作成せずにビジネス ロジックへの呼び出しを Validate メソッドに入れることはできません。

自動生成された DataAnnotations、独自の検証拡張機能、ビジネス ロジックでの検証、および IBindingValidatable メソッドを組み合わせるより良い方法はありますか?

ありがとうございました

4

1 に答える 1

0

ビジネス ロジック ルールに基づく検証はビジネス レイヤーに保持し、データ入力の検証のみを UI レイヤーに含める必要があります。

たとえば、一部の正規表現によると、電子メール アドレス エントリの検証は UI レイヤーに属しますが、電子メール アドレスがシステムに一意であることを確認することは、ビジネス ロジックで行う必要があります。

これが役立つことを願っています。

于 2012-06-26T17:57:16.090 に答える