前提・実現したいこと
ASP.NET、CustomValidatorを用いて、RadioButton1とDropDownList1のIndex0が選択されている時、エラーメッセージを出したいと思っています。調べながら書いてはみましたがうまく動かず、どのようにしたら動くようになるのか、ご教示いただけますでしょうか。
EnableClientScriptプロパティはtrueです。
該当のソースコード
★クライアント側検証 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="おためし.WebForm1" %> <!DOCTYPE html> <html xmlns="****"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script type="text/javascript"> function check(sender, e) { radio = document.getElementById('<%= RadioButton1.ClientID%>'); drop = document.getElementById('<%= DropDownList1.ClientID%>'); if (radio.Checked == true && drop.SelectedIndex == 0) { e.IsValid = false; } else { e.IsValid = true; } } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="CustomValidator" OnServerValidate="CustomValidator1_ServerValidate" ClientValidationFunction="check"></asp:CustomValidator> </div> <asp:RadioButton ID="RadioButton1" runat="server" GroupName="radio" /> <asp:RadioButton ID="RadioButton2" runat="server" GroupName="radio" /> <br /> <asp:DropDownList ID="DropDownList1" runat="server"> <asp:ListItem>0</asp:ListItem> <asp:ListItem>1</asp:ListItem> </asp:DropDownList> </form> </body> </html> ★サーバー側検証 namespace おためし { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) { if(RadioButton1.Checked == true && DropDownList1.SelectedIndex == 0) { args.IsValid = false; } else { args.IsValid = true; } } } }
補足情報(FW/ツールのバージョンなど)
ASP.NET
Visual Studio2019
C#
.NET Framework4.8
サーバー側の判定条件、
RadioButton1.Checked == true && DropDownList1.SelectedIndex == 0
がちょっと変なような気がするのですが、それはともかく、全く同じ条件(RadioButton1 にチェックが入っていて、かつ、DropDownList の最初の項目が選択されている場合は検証 NG その他は検証 OK)でクライアント側も判定すればいいのですか?
返信遅くなり申し訳ございません。
はい。その通りです。
回答1件
あなたの回答
tips
プレビュー