1

特定の会社の電子メール ID を検証するために、RegularExpressionValidator を使用しています。これです:

ValidationExpression=\\w+([-+.']\\w+)*@ABCCompany.com 

最初の電子メール ID のみで機能しています。複数の電子メールを検証する必要があります。オンラインで別のものを見つけました:

ValidationExpression="((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([;])*)*"

正常に動作していますが、検証する必要がありABCCompany.comます。CustomValidatorサーバー側の検証も試してみましたが、コード的には機能していますが、エラーメッセージは表示されません。

誰でも私の問題を解決するのを手伝ってくれませんか。

私のHTMLコード:

<

telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" CellPadding="0"  CellSpacing="0" GridLines="None" HorizontalAlign="Left" ShowFooter="true" AllowPaging="true"  PageSize="10" AllowMultiRowSelection="true" OnItemCommand="RadGrid1_OnItemCommand" OnNeedDataSource="RadGrid1_OnNeedDataSource" OnInsertCommand="RadGrid1_OnInsertCommand" OnUpdateCommand="RadGrid1_OnUpdateCommand" OnDeleteCommand="RadGrid1_OnDeleteCommand"  AllowSorting="true"> 

 <PagerStyle Position="Bottom" AlwaysVisible="true" /> 

 <ValidationSettings EnableValidation="true" ValidationGroup="products" /> 

<MasterTableView CommandItemDisplay="Top" HorizontalAlign="NotSet" AutoGenerateColumns="False" DataKeyNames="id"> 

 <Columns> 
<telerik:GridTemplateColumn DataField="Product_ID" FilterControlAltText="Filter Product_ID column" HeaderText="Product_ID" UniqueName="Product_ID" SortExpression="Product_ID"> 

<HeaderStyle HorizontalAlign="Center" /> 

<ItemStyle HorizontalAlign="Center" /> 

<ItemTemplate> 

<asp:Label ID="lblProduct_ID" runat="server" Text='<%# Bind("Product_ID") %>'></asp:Label> 

</ItemTemplate> 

</telerik:GridTemplateColumn> 

<telerik:GridTemplateColumn DataField="Product_Email" FilterControlAltText="Filter Product_Email column" 

HeaderText="Product Email" UniqueName="Product_Email" SortExpression="Product_Email"> 

<HeaderStyle HorizontalAlign="Left" /> 

<ItemStyle HorizontalAlign="Left" /> 

<ItemTemplate> 

<asp:Label ID="lblProduct_Email" runat="server" Text='<%# Bind("Product_Email") %>'></asp:Label> 

</ItemTemplate> 

<EditItemTemplate> 

<asp:TextBox ID="tbProduct_Email" runat="server" Text='<%# Bind("Product_Email") %>' 

Width="500px"></asp:TextBox>&nbsp;(Note: Enter multiple emails with ; separator) 

<asp:RequiredFieldValidator ID="rfvtbProduct_Email" runat="server" ControlToValidate="tbProduct_Email" 

ErrorMessage="Please enter Product Email" ForeColor="Red" ValidationGroup="products"></asp:RequiredFieldValidator>  

<asp:CustomValidator ID="cvtbProduct_Email" runat="server" ControlToValidate="tbProduct_Email" 

ForeColor="Red" ErrorMessage="Enter only valid ABCCompany Emails" OnServerValidate="cvtbProduct_Email_OnServerValidate" 

ValidationGroup="products" EnableClientScript="false" Display="None"></asp:CustomValidator> 

</EditItemTemplate> 

</telerik:GridTemplateColumn> 

<telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn"> 

<ItemStyle HorizontalAlign="Center"></ItemStyle> 

</telerik:GridEditCommandColumn> 

<telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" Text="Delete" 

UniqueName="DeleteColumn"> 

<ItemStyle HorizontalAlign="Center"></ItemStyle> 

</telerik:GridButtonColumn> 

</Columns> 

<EditFormSettings ColumnNumber="1" CaptionDataField="Product_id" CaptionFormatString="Edit properties of Product ID: {0}"  InsertCaption="Product ID:"> 

</EditFormSettings> 

</MasterTableView> 

<ClientSettings EnableRowHoverStyle="true"> 

</ClientSettings> 

</telerik:RadGrid>

サーバー側の検証コード:

    protected void cvtbProduct_Email_OnServerValidate(object sender, ServerValidateEventArgs args)
    {
        bool valid;

        var email = new string[100];

        var emailList = (TextBox) RadGrid1.MasterTableView.GetInsertItem().FindControl("Product_Email");

        if (emailList.Text != "")
        {
            if (emailList.Text.Contains(";"))

                email = emailList.Text.Split(';');

            else

                email[0] = emailList.Text;

            for (var i = 0; i < email.Length; i++)
            {
                if (email[i] != null)
                {
                    valid = Regex.IsMatch(email[i], "\\w+([-+.']\\w+)*@ABCCompany.com");

                    if (!valid)
                    {
                        args.IsValid = false;
                    }

                    else

                        args.IsValid = true;
                }
            }
        }
    }
4

1 に答える 1