ASP.NET验证程序,使用JavaScript进行验证

问题描述 投票:0回答:1

我有一个带有文本框的页面,用户可以在其中输入其姓名和地址。我还具有与每个输入文本框关联的ASP.NET requiredfieldvalidator,以验证它们是否输入了自己的信息。一切都可以从C#服务器端验证字段,但是,我还需要从客户端验证它们。我有一个与按钮绑定的OnClientClick和OnClick事件。调用OnClientClick函数时,我想验证requiredfieldvalidators是否有效(即用户在输入框中输入的信息),如果是这样,那么我想启动一个JS计时器,该计时器将在经过一定时间后执行某些操作。同时,Onclick服务器端事件将触发并执行代码以将输入插入数据库。服务器端代码正确执行,因为我的“ if(Page.IsValid)”正确。如果学生未在所有必填字段中输入信息,则该信息为假,并且不执行其余代码。如果学生确实输入了所有信息,则插入DB。但是,在客户端代码中,当我执行“ if(Page_ClientValidate())”时,即使没有填写任何字段,它也始终会返回true。我想念什么?我想说的是:“验证成功(即已输入所有字段),然后启动计时器,否则不启动计时器”。以下是我的代码的简短片段。因此,当客户端功能“ Test()”被调用时,即使输入为空,也总是说“ true”,但是服务器端功能显示Page.IsValid为false,停止并显示验证器消息(已定义)在Page_Load()期间的服务器端函数中)。为什么客户端总是让我为真,而服务器端却为假????

谢谢,

布拉德

客户:

<%@ Page Language="c#" CodeBehind="test1.aspx.cs" AutoEventWireup="false" Inherits="test1" %>

<!DOCTYPE html>
<html>
<head>
    <title>xyz</title>
</head>
<body>
    <form id="Form1" method="post" runat="server">
        <div id="webPage">
            <h3 class="section-title" align="left">User Information</h3>

            <div class="grid-row no-padding">
                <div class="grid-col-xs-12">
                    <div class="grid-row no-padding">
                        <div class="grid-col-xs-12">
                            <div class="form-field" style="padding-bottom: 0px; margin-bottom: 0px;">
                                <p><span style="color: blue;">Name on Card</span></p>
                            </div>
                        </div>
                    </div>

                    <div class="grid-row no-padding"> 
                        <div class="grid-col-xs-6" style="min-width:200px;">
                            <div class="form-field">
                                <label class="formlabel">First Name:</label>
                                <asp:TextBox ID="tbBillFirstName" runat="server" CssClass="input-textbox editable" BackColor="#fff2e6"></asp:TextBox>
                                <asp:RequiredFieldValidator ID="rfvFirstName" ControlToValidate="tbBillFirstName" Display="Dynamic" runat="server"
                                    Font-Names="Arial" Font-Size="10" Font-Bold="False" ForeColor="#ff8c19"></asp:RequiredFieldValidator>
                            </div>
                        </div>
                        <div class="grid-col-xs-6" style="min-width:200px;">
                            <div class="form-field">
                                <label class="formlabel">Last Name:</label>
                                <asp:TextBox ID="tbBillLastName" runat="server" CssClass="input-textbox editable" BackColor="#fff2e6"></asp:TextBox>
                                <asp:RequiredFieldValidator ID="rfvLastName" ControlToValidate="tbBillLastName" Display="Dynamic" runat="server"
                                    Font-Names="Arial" Font-Size="10" Font-Bold="False" ForeColor="#ff8c19"></asp:RequiredFieldValidator>
                            </div>
                        </div>
                    </div>

                    <div class="grid-row no-padding">
                        <div class="grid-col-xs-12">
                            <div class="form-field" style="padding-bottom: 0px; margin-bottom: 0px;">
                                <p><span style="color: blue;">Billing Address</span></p>
                            </div>
                        </div>
                    </div>

                    <div class="grid-row no-padding">
                        <div class="grid-col-xs-6" style="min-width:200px;">
                            <div class="form-field">
                                <label class="formlabel">Street1:</label>
                                <asp:TextBox ID="tbBillAddress1" runat="server" CssClass="input-textbox editable" BackColor="#fff2e6"></asp:TextBox>
                                <asp:RequiredFieldValidator ID="rfvAddress1" ControlToValidate="tbBillAddress1" Display="Dynamic"
                                    Font-Names="Arial" Font-Size="10" Font-Bold="False" ForeColor="#ff8c19" runat="server"></asp:RequiredFieldValidator>
                            </div>
                        </div>
                        <div class="grid-col-xs-6" style="min-width:200px;">
                            <div class="form-field">
                                <label class="formlabel">Street2:</label>
                                <asp:TextBox ID="tbBillAddress2" runat="server" CssClass="input-textbox editable" BackColor="#fff2e6"></asp:TextBox>
                            </div>
                        </div>
                    </div>

                    <div class="grid-row no-padding">
                        <div class="grid-col-xs-6" style="min-width:200px;">
                            <div class="form-field">
                                <label class="formlabel">City:</label>
                                <asp:TextBox ID="tbBillCity" runat="server" CssClass="input-textbox editable" BackColor="#fff2e6"></asp:TextBox>
                                <asp:RequiredFieldValidator ID="rfvBillCity" ControlToValidate="tbBillCity" Display="Dynamic" runat="server" Font-Names="Arial" Font-Size="10" Font-Bold="False" ForeColor="#ff8c19"></asp:RequiredFieldValidator>
                            </div>
                        </div>
                        <div class="grid-col-xs-6" style="min-width:200px;">
                            <div class="form-field">
                                <label class="formlabel">State:</label>
                                <asp:DropDownList ID="StatesDDL" runat="server" DataTextField="State_name" DataValueField="State_code" CssClass="input-textbox editable" AutoPostBack="False" BackColor="#fff2e6"></asp:DropDownList>
                                <asp:RequiredFieldValidator ID="rfvBillState" ControlToValidate="StatesDDL" Display="Dynamic" InitialValue="Select" runat="server" Font-Name="Arial" Font-Size="10" Font-Bold="False" ForeColor="#ff8c19"></asp:RequiredFieldValidator>
                            </div>
                        </div>
                    </div>

                    <div class="grid-row no-padding">
                        <div class="grid-col-xs-6" style="min-width:200px;">
                            <div class="form-field">
                                <label class="formlabel">Zip:</label>
                                <asp:TextBox ID="tbBillZip" runat="server" CssClass="input-textbox editable" BackColor="#fff2e6"></asp:TextBox>
                                <asp:RequiredFieldValidator ID="rfvBillZip" ControlToValidate="tbBillZip" Display="Static"
                                    runat="server" Font-Names="Arial" Font-Size="10" Font-Bold="False" ForeColor="#ff8c19"></asp:RequiredFieldValidator>
                                <asp:CustomValidator ID="cvZip" Font-Names="Arial" Font-Size="10" Font-Bold="False"
                                    ForeColor="#ff8c19" runat="server" Display="Dynamic" ControlToValidate="tbBillZip"
                                    OnServerValidate="CheckZipFormat"></asp:CustomValidator>
                            </div>
                        </div>
                        <div class="grid-col-xs-6" style="min-width:200px;">
                            <div class="form-field">
                                <label class="formlabel">Country:</label>
                                <asp:DropDownList ID="ddlCountry" runat="server" DataTextField="Country_name" DataValueField="Country_code"
                                    OnSelectedIndexChanged="CountryChanged" AutoPostBack="True"
                                    CssClass="input-textbox editable" BackColor="#fff2e6">
                                </asp:DropDownList>
                                <asp:RequiredFieldValidator ID="rfvCountry" runat="server" ControlToValidate="ddlCountry"
                                    Display="Dynamic" Font-Names="Arial" Font-Size="10" Font-Bold="False"
                                    ForeColor="#ff8c19" InitialValue="00"></asp:RequiredFieldValidator>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        <div id="divSubmit" class="grid-row bottom-nav">
            <div class="grid-col-xs-12" style="text-align:center;">
                <asp:LinkButton ID="btn_submit2" runat="server" OnClientClick="Test();" OnClick="btn_submit_Click" CssClass="button button-orange" CausesValidation="true">Submit</asp:LinkButton>
            </div>
        </div>
        </div>

        <script type="text/javascript">
            function Test() {
                if (Page_ClientValidate()) {
                    alert('valid');
                }
                else {
                    alert('not valid');
                }
            }
        </script>
    </form>
</body>
</html>

服务器端:

public void btn_submit_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        // insert into DB
    }
}
javascript c# asp.net
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.