2011-11-01 10 views
0

クラスのフィールドに検証属性を使用し、そのような要件があります。 フィールド 'a'の検証が成功した後、フィールド 'b'フィールド 'a'は検証をスローするのではなく、フィールド 'b'の検証を無視します。
それは実現可能なのでしょうか、他の方法で考えるべきですか?MVC3で依存関係フィールドの検証を使用する方法

public class myclass 
{ 
[required] 
public string a{get;set;} 
[required] 
public string b{get;set;] 
} 

は私がしたい:1.if sが

+0

私はあなたの質問を理解していません。 –

答えて

2

チェックを検証B 'を実行していない、その後、検証に合格していないのが2.Ifは を検証' はbを実行し、検証に合格しますMVC.ValidationToolkit

http://blogs.msdn.com/b/simonince/archive/2011/09/29/mvc-validationtookit-alpha-release-conditional-validation-with-mvc-3.aspx

外にそれはあなたを助けるこれら二つの検証が含まれています。

  • 必須IfAttribute。この属性は、「このフィールドは、他のフィールドの値がXの場合に必要です。 [RequiredIf( "OtherField"、 "TargetValue")]として使用されます。
  • RequiredEmptyIfAttribute。この属性は、「このフィールドは、他のフィールドの値がXの場合は空でなければなりません。これは[RequiredEmptyIf( "OtherField"、 "TargetValue")]として使用されます。
0

カスタム検証ロジックを含むモデルにIValidateableObjectインターフェイスを実装します。あなたが要求した方法で検証チェックを適用することはできないので、独自のカスタム検証に頼る必要があります。私はマイケルの提案は考えていませんが、実際には「有効であれば、他のものを属性で検証する」必要がある場合は、このインターフェースを使って簡単に行うことができます。ただし、これは独自のクライアント部分を作成する場合を除き、サーバー側の検証だけになります。

関連する問題