これが取引です。テキストボックスに入力がある場合にのみ起動するカスタムバリデーターを作成しました。起動すると、ボックス内のテキストが整数であるかどうかをテストする必要があり、整数でない場合は拒否されます。しかし、それは発火しません、そして私はその理由を理解しようとしています。
私はこのvoidを部分的なc#クラスの本体に入れました:
protected void intValidate_Validate(object sender, ServerValidateEventArgs arg)
{
int num;
bool isNum = int.TryParse(arg.ToString(), out num);
if(arg.Value.Length>0){
if (isNum)
{
arg.IsValid = true;
}
else
{
arg.IsValid = false;
}
}
else{
arg.IsValid=true;
}
}
バリデーターのコードは次のとおりです。
<div class="adult">
<label>Adults ($10)</label>
<asp:TextBox runat="server" ID="wAdultLunch" class="adultLunch" MaxLength="2" />
<asp:CustomValidator ID="intValidate" ControlToValidate="wAdultLunch" ErrorMessage="Invalid number" OnServerValidate="intValidate_Validate" Display="Static" runat="server" EnableClientScript="False" ValidateEmptyText="True"></asp:CustomValidator>
</div>
洞察をいただければ幸いです。
編集:私は以下のポストバックコードを添付しました
<asp:Button ID="wSubmit" runat="server" Text="Submit" OnClientClick="return validateForm();" causesvalidation="true"/>