2012-02-21 12 views
2

ビューモデルに2つのテキストフィールドtext1とtext2があります。 text1が入力されていればtext2を入力しなければならないかどうかを検証する必要があります。ビューモデルのカスタム検証でこれをどのように達成できますか?asp.net mvcの2つのフィールドの検証 - 1つは他に入力した場合に存在する必要があります

ありがとうございました。

あなたはjQueryのを使用することができます

答えて

8

あなたはあなたのビューモデル上のサーバー側の検証のためにIValidatableObjectSystem.ComponentModel.DataAnnotations名前空間から)を実装使用することができます。

public class AClass : IValidatableObject 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string SecondName { get; set; } 
     public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
     { 
      if((!string.IsNullOrEmpty(Name) && string.IsNullOrEmpty(SecondName)) || (string.IsNullOrEmpty(Name) && !string.IsNullOrEmpty(SecondName))) 
       yield return new ValidationResult("Name and Second Name should be either filled, or null",new[] {"Name","SecondName"}); 
     } 
    } 

今では作りますNameとSecondNameの両方が設定されている場合はnull、そうでない場合はmodelが有効です。

+0

であることを確認してください。妥当性確認の要約を使用している場合は、検証結果にフィールドを返さないことをおすすめします。検証結果の両方のフィールドを返すと、検証サマリには、期待される単一のメッセージの代わりに2つのメッセージが含まれます。 –

+0

クラスのプロパティに注釈を付けるためにこれをどのように使用するかについて、いくつかのコードを含めることができますか? – niico

0

、このような何か:

$("input[x2]").hide(); 
    $("input[x1]").keypress(function() { 
      var textValue = ("input[x1]").val(); 
     if(textValue) 
         $("input[x2]").show(); 
     }) 
0

あなたはデータ注釈バリデータと検証は、あなたのモデルに属性を使用したい場合は、これを見て取る必要があります:それは条件付きの検証を行い、MVC確実な検証で 「attribute dependent on another field

関連する問題