3

ユーザー入力の検証にasp.net検証コントロールを使用しています。私が望むのは、検証コントロールによって生成されたエラー メッセージでラベル テキストを変更することです。

<asp:Label ID="Label1" runat="server" Text="Whats your name"></asp:Label>
<asp:TextBox ID="nameB" Width="322px" Height="30px" runat="server"></asp:TextBox>

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ValidationGroup="business" runat="server" ErrorMessage="Please tell us your name." ControlToValidate="nameBuisness" CssClass="errMsg" Display="Dynamic"></asp:RequiredFieldValidator>

ありがとうございました。

4

2 に答える 2

1

組み込みのASP.Net検証コントロールを使用してこの検証を実行する必要がある場合は、ASP.NetCustomValidatorコントロールを使用する必要があります。これは、ASP.NetRequiredFieldValidatorコントロールを使用して実行することはできません。指定した検証を行うには、ページにCustomValidatorコントロールを配置して、マークアップが次のようになるようにします。

<asp:Label ID="Label1" runat="server" Text="Whats your name"></asp:Label>

<asp:TextBox ID="nameB" Width="322px" Height="30px" runat="server"></asp:TextBox>

<asp:CustomValidator ID="CustValidator" runat="server" ControlToValidate="nameB" 
    ValidateEmptyText="true"  ErrorMessage="Please tell us your name."  
    onservervalidate="CustValidator_ServerValidate" Display="none"  >**</asp:CustomValidator>

<asp:Button ID="btnSubmit" runat="server" Text="Submit" onclick="btnSubmit_Click"  CausesValidation="true"  />

次に、カスタムバリデーターを作成する必要があります。サーバー側の検証コードは次のようになります。

    protected void CustValidator_ServerValidate(object source, ServerValidateEventArgs args)
    {
        if (string.IsNullOrWhiteSpace(args.Value))
        {
            Label1.Text = CustValidator.ErrorMessage;
            args.IsValid = false;
        }
        else
        {
            Label1.Text = "Whats your name";
            args.IsValid = true;
        }
    }

このカスタムバリデーターは、あなたが望む振る舞いを提供します。

一般に、CustomValidatorコントロールを使用する場合は、サーバー側の検証(セキュリティのため)とクライアント側の検証(UIエクスペリエンスを向上させるため)の両方を実行する必要があります。クライアント側の検証を取得するには、javascriptやjQueryでクライアント側の関数を記述して同様の検証を行い、それをカスタムバリデーターのClientValidationFunctionに割り当てる必要があります。

CustomValidatorコントロールの詳細については、MSDNドキュメントを参照してください。

于 2012-12-29T22:23:33.560 に答える
1

1 つの方法は、送信ボタンのOnClientClick-event を処理し、次のような JavaScript 関数を呼び出すことです。

<script type="text/javascript">
    function displayValidationResult() {
        // Do nothing if client validation is not available
        if (typeof (Page_Validators) == "undefined") return;
        var LblName = document.getElementById('LblName');
        var RequiredName = document.getElementById('RequiredName');
        ValidatorValidate(RequiredName);
        if (!RequiredName.isvalid) {
            LblName.innerText = RequiredName.errormessage;
        }
    }
</script>

<asp:Label ID="LblName" runat="server" Text="Whats your name"></asp:Label>
<asp:TextBox ID="TxtNameBusiness" Width="322px" Height="30px" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredName" ValidationGroup="business"
    runat="server" ErrorMessage="Please tell us your name." ControlToValidate="TxtNameBusiness"
    CssClass="errMsg" Display="None"></asp:RequiredFieldValidator>
<asp:Button ID="BtnSumbit" runat="server"  Text="Submit"
    OnClientClick="displayValidationResult()" ValidationGroup="business" />

利用可能ないくつかの ASP.NET クライアント検証メソッドのいくつかを使用しました。また、コントロールの名前をもう少し意味のある名前に変更し、送信ボタンを追加しました。

詳細な ASP.NET 検証

于 2012-12-29T22:08:34.477 に答える