2

ASP.NET のコントロール

<asp:TextBox ID="txtEnd" runat="server" placeholder="12:59"></asp:TextBox>
<asp:RadioButtonList ID="rblTime2" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow">
    <asp:ListItem>AM</asp:ListItem>
    <asp:ListItem>PM</asp:ListItem>
</asp:RadioButtonList>

CustomValidator

<asp:CustomValidator ID="ValidateStartTime" ControlToValidate="txtEnd" OnServerValidate="ValidateStartTimeFun" runat="server" ErrorMessage="*required"></asp:CustomValidator>

コードビハインド

protected void ValidateStartTimeFun(object source, ServerValidateEventArgs args)
{
    try
    {   if (txtStart.Text != "" && rblTime.SelectedValue != null )
        { args.IsValid = true; }}
    catch (Exception ex)
        { args.IsValid = false; }
}

CodeBehind 全体をこれに変更しても、*required は表示されません。

protected void ValidateStartTimeFun(object source, ServerValidateEventArgs args)
{
    args.isValid = false;
}
4

5 に答える 5

2

空の入力を検証している場合、プロパティを設定し、プロパティをに設定しない場合、カスタム バリデータは起動ControlToValidateしません。それ以外の場合、フレームワークは.ValidateEmptyTexttrueRequiredFieldValidator

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.validateemptytext.aspx

于 2013-01-03T15:46:23.687 に答える
0

ValidationGroup要素が欠落していると思います。

ValidationGroup値をチェックする必要があるバリデーターとボタン(またはValidateページのメソッドを使用してプログラムでチェックする)にも同じ値を設定する必要があります。

于 2013-01-03T15:51:54.750 に答える
0

ControlToValidateプロパティを設定するCustomValidatorと、ユーザーが何も入力または選択しないと起動しません。ただし、省略した場合は、フォームが送信されたときに常に起動します。

だからそれを削除します。

<asp:CustomValidator ID="ValidateEndTime" 
    OnServerValidate="ValidateEndTimeFun" 
    runat="server" ErrorMessage="*required">
</asp:CustomValidator>

複数のコントロールを検証しているので、そのようにします。それ以外の場合は、gfyans が述べたようにValidateEmptyTextプロパティを設定することもできます。true

于 2013-01-03T15:48:10.657 に答える
0

これはSarawut Positwinyuが見つけた答えでもあるため、更新パネルなしで使用してから長い時間が経ちました。

Custom Validator, when placing in formview will not show its error message after
server-side validation (though it has been validated and result is invalid) the 
mean to fix this in to wrap it by a Update Panel. 

また、検証されるすべてのコントロールに常に validationgroup="name of the group" を入力し、validateemptytext をカスタム バリデーターに true に設定したことも覚えています。

回答参照

于 2013-01-03T15:53:28.633 に答える
0

コントロールごとに異なるバリデーターを使用しないのはなぜですか? また、サーバーでカスタムバリデーターを機能させるには、タグから ControlToValidate プロパティを破棄するだけです。コードビハインドで使用した条件も確認してください。

于 2013-01-03T16:27:21.400 に答える