我有一个包含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" />
答案 0 :(得分:2)
您的第一个任务应该是确保客户端验证成功完成,然后进行回发和服务器端验证。您可以使用以下js代码来验证页面是否正确验证。
if (typeof (Page_Validators) != "undefined") {
if (typeof (Page_ClientValidate) == 'function') {
isPageValid = Page_ClientValidate("AccountValidation");
}
}
根据isPageValid值,您可以停止或继续回发。