2

私は2つのmvcモデルを持っています

public class Model1
{
    [Required]
    public int Id {get;set;}
    [Required]
    public string Name {get;set;}
}

public class Model2
{
    public Model1 ValidateThis {get;set;}
    public Model1 DoNotValidateThis {get;set;}
}

ポストバックでは、ValidateThis と DoNotValidateThis の両方のプロパティに入力します。ValidateThis プロパティでのみ検証が行われるようにしたい。

4

3 に答える 3

1

デフォルトのモデル バインダーはこれをサポートしていません。独自のモデル バインダーを実装する必要があります。

  • 新しい属性を作成し、DoNotValidateMeAttribute
  • DoNotValidateMeAttributeモデル バインディングを実行するときに が存在するかどうかを確認し、存在しない場合は検証なしでモデル バインディングを実行する新しいモデル バインダーを作成します。

次に、このようにモデルに注釈を付けます

public class Model2
{
    public Model1 ValidateThis {get;set;}

    [DoNotValidateMe]
    public Model1 DoNotValidateThis {get;set;}
}

「ASP.NET MVC のカスタム モデル バインダー」をグーグルで検索すると、開始できるはずです。ただし、これはおそらく簡単な作業ではないことに注意してください。

于 2013-08-05T13:49:13.220 に答える
0

IValidatableObjectModel2にインターフェースを実装できます

public class Model2 :  IValidatableObject
{
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
       ....
    }
}
于 2013-08-05T13:35:34.593 に答える