3

クライアントの検証にMVCデータ割り当てを使用しています。

この単純なシナリオをどのように実装しますか。

1つのラジオボタンが選択されている場合にのみ、フィールドを必須としてマークします

4

4 に答える 4

4

クライアント側の検証を行っていると書いたので、目標を達成する1つの方法は、入力要素に添付された検証ルールを削除/変更する単純なJavaScriptです。

$("#YourCheckBox").click(function(){ 
  if($(this).is(':checked')){
      $("#FirstName").rules("add","required")
  } else {
      $("#FirstName").rules("remove","required")
  }
});

検証プラグインとその機能の詳細については、 http://docs.jquery.com/Plugins/Validation/rules#.22add.22rulesをご覧ください。

もちろん、jquery unobutrusive検証の詳細を簡単に見つけて、バリアントを実行することができます。ただし、クライアント側とバックエンドの検証の一貫性を維持したいので、モデルから[必須]を削除する場合は、保存/編集メソッドで値を確認する必要があります。

于 2013-01-09T01:55:45.010 に答える
2

絶対確実な使用を見てくださいRequiredIf属性があります

private class Person
{
  [Required]
  public string FirstName { get; set; }

  [Required]
  public string LastName { get; set; }

  public bool Married { get; set; }

  [RequiredIfTrue("Married")]
  public string MaidenName { get; set; }
}
于 2013-01-08T21:30:03.503 に答える
0

ここを見てみてください、これはあなたを正しい方向に向けるはずです。

http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

于 2013-01-08T21:29:43.917 に答える
0

コードを投稿しなかったので、ラジオボタンフィールドにIDがrdbRequiredあり、フィールド名に「」と表示されていると想定していますMyField

最初MyFieldに必要に応じてマークを付けます。

次に、コントローラーで次のように記述します。

 public ActionResult Index(MyModel model)
    {
       // If the radio button is not selected, MyField is marked as not required. I mean it is not validated
       if (model.rdbRequired == false)  
       {
            ModelState.Remove("MyField"); 
       }
       if(ModelState.IsValid){
       //do something
       }
       else{
             return View(model);
       }
    }

これがお役に立てば幸いです

于 2013-01-09T10:08:23.010 に答える