クライアントの検証にMVCデータ割り当てを使用しています。
この単純なシナリオをどのように実装しますか。
1つのラジオボタンが選択されている場合にのみ、フィールドを必須としてマークします
クライアントの検証にMVCデータ割り当てを使用しています。
この単純なシナリオをどのように実装しますか。
1つのラジオボタンが選択されている場合にのみ、フィールドを必須としてマークします
クライアント側の検証を行っていると書いたので、目標を達成する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検証の詳細を簡単に見つけて、バリアントを実行することができます。ただし、クライアント側とバックエンドの検証の一貫性を維持したいので、モデルから[必須]を削除する場合は、保存/編集メソッドで値を確認する必要があります。
絶対確実な使用を見てください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; }
}
ここを見てみてください、これはあなたを正しい方向に向けるはずです。
http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx
コードを投稿しなかったので、ラジオボタンフィールドに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);
}
}
これがお役に立てば幸いです