服务器端验证在一台机器上而不在另一台机器上发生

时间:2014-01-18 08:04:46

标签: asp.net validation

我有一个包含2个文本框控件的页面,用于帐号和门牌号码。这两个控件都需要feild验证器和正则表达式。我也有一些服务器端验证,只有在客户端验证通过时才会触发。

问题是,在我的本地开发虚拟机中,如果我将文本框留空并单击按钮,则会触发客户端验证。如果单击按钮将文本框保留为空,则将相同的代码部署到我们的测试环境和测试站点上,同时触发服务器端和客户端验证。

我也希望在测试环境中也有相同的行为。即服务器端应仅在客户端验证通过时触发。

导致此行为的原因是什么?我是.net的小新手,请原谅我,如果我在这里缺少一些非常基本的概念。 Visual Network 2012的.net版本是4.5

代码帐号:

<div id="textboxAccNumCss" runat="server">

    <div class="form-group">
        <asp:Label ID="lblAccontNumber" runat="server" Text="* Account Number"></asp:Label>
        <asp:TextBox ID="txtAccountNumber" runat="server" class="form-control"></asp:TextBox>
    </div>
    <div>
        <asp:RequiredFieldValidator ID="rfvAccountNumber" runat="server" ForeColor="Red" ValidationGroup="AccountValidation" ControlToValidate="txtAccountNumber" ErrorMessage="Enter Account Number"></asp:RequiredFieldValidator>
        <asp:RegularExpressionValidator ID="rgxAccountNumber" runat="server" ControlToValidate="txtAccountNumber" ErrorMessage="Enter in Correct Format" ForeColor="Red" ValidationGroup="AccountValidation" ValidationExpression="\d{1,12}(-\d{1})?"></asp:RegularExpressionValidator>
    </div>
</div>

门牌号码

<div id="textboxHSnoCss" runat="server">

    <div class="form-group">
        <asp:Label ID="lblHouseNumber" runat="server" Text="*House Number"></asp:Label>
        <asp:TextBox ID="txtHouseNumber" runat="server" class="form-control"></asp:TextBox>
    </div>
    <div>
        <asp:RequiredFieldValidator ID="rfvHouseNo" ForeColor="Red" runat="server" ValidationGroup="AccountValidation" ControlToValidate="txtHouseNumber" ErrorMessage="Enter House Number"></asp:RequiredFieldValidator>
        <asp:RegularExpressionValidator ID="rgxHouseNo" runat="server" ValidationGroup="AccountValidation" ControlToValidate="txtHouseNumber" ForeColor="Red" ErrorMessage="Enter in Correct Format" ValidationExpression="^[a-zA-Z0-9 #-/*]*$"></asp:RegularExpressionValidator>
    </div>
</div>

按钮代码单击

<asp:Button ID="Button1" runat="server" Text="Continue" ValidationGroup="AccountValidation" OnClick="btnContinue_Click" class="btn btn-primary" />

1 个答案:

答案 0 :(得分:2)

您的第一个任务应该是确保客户端验证成功完成,然后进行回发和服务器端验证。您可以使用以下js代码来验证页面是否正确验证。

if (typeof (Page_Validators) != "undefined") {
            if (typeof (Page_ClientValidate) == 'function') {
                isPageValid = Page_ClientValidate("AccountValidation");
            }
        }

根据isPageValid值,您可以停止或继续回发。