私は実行する必要がある条件付き検証があります。ロジックは次のように動作します。このASP.NET検証を処理する適切な方法は何ですか?
ラジオボタン1が選択されている場合は、textbox1が必要です。
ラジオボタン2を選択した場合は、dropdownlist1が必要です。
これを行うにはどうすればよいですか?
私は実行する必要がある条件付き検証があります。ロジックは次のように動作します。このASP.NET検証を処理する適切な方法は何ですか?
ラジオボタン1が選択されている場合は、textbox1が必要です。
ラジオボタン2を選択した場合は、dropdownlist1が必要です。
これを行うにはどうすればよいですか?
CustomValidatorを使用してください。
JQuery検証プラグインを使用するクライアント側。 ASP.NETコントロールを使用している場合は、ASP.NETで指定された名前に合わせて名前を調整します。サーバーサイドは比較的簡単です - どのラジオが選択されているかを確認し、テキストボックスまたはドロップダウンリストの値がnullでないことを確認してください。
$(function() {
$('form').validate({
rules: {
required-textbox: function() { return $('#radio_yes:checked').size(); }
required-ddl: function() { return $('#radio_no:checked').size(); }
}
});
})
<input type='radio' id='radio_yes' name='radio' value='1' /> Choice 1
<input type='radio' id='radio_no' name='radio' value='2' /> Choice 2
<input type='text' id='textinp' name='textinp' class='required-textbox' />
<select id='ddl' name='ddl' class='required-ddl'>
<option ... />
</select>
また、CustomValidatorでこれを行うこともできます。もう一度jQueryクライアント側を使用します。ここでも、サーバー側の機能は簡単です(基本的には他の場合と同じです)。
function validateTextBox(source, args)
{
args.IsValid = $('[id$="radio_yes"]:checked').size() && $(source).val();
}
function validateDDL(source, args)
{
args.IsValid = $('[id$="radio_no"]:checked').size() && $(source).val();
}
<asp:RadioButton ID="radio_yes" runat="server" GroupName="radio" /> Choice 1
<asp:RadioButton ID="radio_no" runat="server" GroupName="radio" /> Choice 2
<asp:TextBox ID="textbox" runat="server" />
<asp:CustomValidator ID="textboxValidator" runat="server"
ControlToValidate="textbox"
ClientValidationFunction="validateTextBox"
OnServerValidate="ddl_Validate"
Display="Static"
ErrorMessage="*" />
<asp:DropDownList ID="ddl" runat="server">
....
</asp:DropDownList>
<asp:CustomValidator ID="ddlValidator" runat="server"
ControlToValidate="ddl"
ClientValidationFunction="validateDDL"
OnServerValidate="textbox_Validate"
Display="Static"
ErrorMessage="*" />
これは本当の質問ではありません... – eKek0
"unreal"、then! ;-) – Cerebrus