2017-04-14 13 views
1

私はMVCフレームワークが初めてです。私は2つのラジオボタンを持っていると私は少なくとも1つはチェックする必要があります。私はカスタムバリデーションを通じてそれをしたい、助けが必要ですか?少なくとも1つのラジオボタンはasp.net MVCのカスタム検証でチェックする必要があります

マイビューコード:

Do you have US Work Visa ? 
@Html.RadioButtonFor(m => m.usWorkPermit,"True") Yes I have 
@Html.RadioButtonFor(m => m.usWorkPermit, "False") No I don't 

マイモデルコード:

[UsWorkPermitValidation] 
public Boolean usWorkPermit { get; set; } 

マイコントローラーコード:

[HttpPost] 
public ActionResult Index(Models.JobApplication jobApplication) 
{ 
    if (ModelState.IsValid) 
    { 
    } 
    return View(); 
} 

私が作成した

フィールドが "usWorkPermit" でありますカスタムバリデータ不完全です。私はどのように私は少なくとも1つのラジオボタンを強制的にチェックすることができるか尋ねたいですか?

public class UsWorkPermitValidation : ValidationAttribute 
{ 
    protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
    { 
     // check at least one radio button is checked. 
    } 
} 

カスタムバリデーターの各ラジオボタンの値の取得方法は?もし私が知っていれば、私は簡単にチェックをすることができますか?あなたはこれを試すことができ

+0

あなたは '[必須]'を使ってみましたか? –

+0

[必須]私のケースでは動作しません。 – yogihosting

+1

"ラジオボタン"の定義によれば、 "少なくとも1つの"ラジオボタンがチェックされないようにするには、 "正確に1つの"ラジオボタンをチェックします。つまり、ラジオボタンのグループでは、2つのラジオボタンをチェックするのは無意味です。これがチェックボックスの対象です。 –

答えて

1

のためだけのカスタムバリデータを使用する必要はありませんなぜ人々はすでに、これは簡単に時間を浪費しているときの時間を無駄にわたしたちのため。代わりに邪魔にならないjsを使ってみてください。

class UsWorkPermitValidation 
{ 
    [Required(ErrorMessage = "Your error message")] 
    public Boolean usWorkPermit { get; set; } 
} 
あなたview.cshtmlで

@Html.Label("Yes, I've") 
@Html.RadioButtonFor(model => model.usWorkPermit, "Yes") 
@Html.Label("No, I don't Have") 
@Html.RadioButtonFor(model => model.usWorkPermit, "No") 

、バンドル/現在のビュー内の次のjQueryのスクリプトファイルの参照を追加します。

<script src="~/Scripts/jquery-3.1.1.min.js"></script> 
<script src="~/Scripts/jquery.validate.js"></script> 
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script> 

ここでは、その実行のスナップです。

enter image description here

+0

クライアント側の検証は、簡単にバイパスすることができるためです。 – CodeCaster

2

は、それは私によると私

@Html.RadioButtonFor(m => m.usWorkPermit, true , new {@required = "true"}) //Yes I have 
@Html.RadioButtonFor(m => m.usWorkPermit, false) //No I don't 

のために働いて、この

関連する問題