2

そのため、ASP.NET MVC 3 と Entity Framework 4.1 (コード ファースト) を使用しています。

私はこのようなクラスを持っています:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    [Range(18, 99)]
    public int Age { get; set; }
}

範囲の検証は正しく実行されます。しかし、たとえば、Age 属性の範囲を変更したい場合があります。またはオフにすることもできます。Model クラスを変更せずにどうすればよいでしょうか? これをプログラムで作成することは可能ですか?

4

3 に答える 3

1

私はちょうどこの場合の解決策を実現しました。

例えば。ユーザーは、14歳の人を作成する権限を持つことができます。

モデルを保存する前に、DataContext.GetValidationErrors()を呼び出して、エラー検証が無効にすることだけであるかどうかを推測してから、設定することができます。

DataContext.Configuration.ValidateOnSaveEnabled = false;

したがって、この方法でモデルを保存できます。

于 2012-09-11T14:32:52.540 に答える
1

IValidatableObject インターフェイスを使用して、カスタム検証規則を定義できます。

私の答えを見てください:

フォームmvc 3で別のフィールドを検索しながら、データ注釈を使用してフィールドを必須にする

通常は、インターフェイスを実装し、ルールを適用するタイミングを決定するだけです。

于 2011-09-22T19:13:38.173 に答える
0

はい、バリデーターをプログラムで挿入することは可能です。一部の属性は読み取り専用であるため、既存のバリデーターを変更すると別の問題が発生するため、既存のバリデーターを削除して置き換える必要がある場合があります。

この質問に対する私の回答に従って、バリデーターで動作するクラスを追加できます。

于 2011-09-22T18:54:19.557 に答える