2011-11-09 25 views
2

私はこの問題を持っている:ASP.Net MVC 3.0のリモート検証

を:

私は2つの属性の合計が、私は次のように使用しています。このために100 よりも大きいcan`tしたモデルを検証しています私のモデルでは

これらは私の属性は以下のとおりです。

[Remote("ValidatePrevTextWidth", "Validation", AdditionalFields = "TextboxWidth")] 
    public int PrevTextWidth { get; set; } 

[Remote("ValidateTextboxWidth", "Validation", AdditionalFields = "PrevTextWidth")] 
    public int TextboxWidth { get; set; } 

私ValidationControllerは以下の通りですしています

public JsonResult ValidatePrevTextWidth(int PrevTextWidth, int TextboxWidth) 
    { 
     bool valid = AreValid(PrevTextWidth, TextboxWidth); 
     return Json(valido, JsonRequestBehavior.AllowGet); 
    } 

public JsonResult ValidateTextboxWidth(int TextboxWidth, int PrevTextWidth) 
    {    
     bool valid = AreValid(PrevTextWidth, TextboxWidth); 
     return Json(valido, JsonRequestBehavior.AllowGet); 
    } 

private bool AreValid(int prevTextWidth, int textboxWidth) 
    { 
     return (prevTextWidth + textboxWidth)<=100; 
    } 
正常に動作します

@using (Html.BeginForm("Index", "Pregunta", FormMethod.Post, new { id = "frmNewPreguntaDesign" })) 
{ @Html.TextBoxFor(m => m.PrevTextWidth) 
    @Html.TextBoxFor(m => m.TextboxWidth) 
} 

私の見解は次のとおりです。 ユーザーによって挿入さprevTextWidth55であり、彼はその後、textboxWidth46を挿入し、ここでの検証がtextboxWidthに失敗し、それが強調表示されているとします。 問題は次のようです。

しかし、ユーザーがprevTextWidthの値を54に変更するとどうなりますか?検証はt fail, but the textboxWidth will continue to be highlighted and not valid. The only way to make it valid is to re-insert the value of textboxWidth`を獲得しました。

2つの属性を同時に検証し、有効にするために2番目の値を再挿入しない方法はありますか?事前に

おかげで、

マティアス

答えて

0

は、残念ながら、リモートバリデータはそのフィールドの値を取得するには、追加のフィールドを使用しています - その追加のフィールドが変更されたとき、それは検証をトリガしません。 JQuery EqualTo(MVCのCompareAttribute)も同じことをします。

あなたが望むものを達成できる方法の1つは、追加のフィールドが変更されたときに最初のフィールドを検証するためのJavaScriptの書き方です。

$('#PrevTextWidth').change(function() { 
    $('#TextboxWidth').valid(); 
}); 
+0

お返事ありがとうございます。私はすでにそれを試みました。 PrevTextWidthを最初に変更したときに、それは最初に変更されました。両方の属性を検証します。しかし、それはPrevTextWidthフィールドのみを検証する次の時間です。警告メッセージは常に表示されます。なぜこれが起こるかもしれないのか?ありがとう –

+0

しかし、それは残念なことに仕事をするつもりはない。閉じるが、@Kiffからの完全な答えはこちらをご覧くださいhttp://stackoverflow.com/questions/10163683/remote-validation-mvc-3-0-multiple-fields-validation – MemeDeveloper