当我在向导控件的第二步中单击下一个按钮时,我正在尝试进行服务器端验证。
当我点击下一个按钮时,我的验证似乎显示我的两个文本框是有效的,但是,无论如何它都会跳到下一步。手机和邮政编码都是必需的。
需要检查注释框以确保它不包含超过200个值。当我的两个验证控件无效时,我无法弄清楚为什么它会进入下一步。
下面是我的这些twp文本框的验证控件的代码,以及我单击下一个按钮时代码的代码。此代码适用于向导的第一步。以下是该站点的链接,以便您了解会发生什么。 http://scort323.csweb.kutztown.edu/Assign3/assign3.aspx
<tr>
<td>
<asp:Label ID="LabelPhone" runat="server" Text="*Phone:" CssClass="LabelText"></asp:Label>
</td>
<td>
<asp:TextBox ID="TextBoxPhone" runat="server" CssClass="TextBox"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="phoneRequiredFieldValidator" runat="server" ErrorMessage="Please enter your phone number."
CssClass="errorMessage" ControlToValidate="TextBoxPhone" Text="*" SetFocusOnError="true"
Display="Dynamic" ValidationGroup="infoGroup"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="phoneRegularExpressionValidator" runat="server"
ErrorMessage="Please enter a valid phone number(xxx-xxx-xxxx)." ControlToValidate="TextBoxPhone"
ValidationExpression="\d{3}-\d{3}-\d{4}" Text="*" CssClass="errorMessage" SetFocusOnError="true"
Display="Dynamic" ValidationGroup="infoGroup"></asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td>
<asp:Label ID="LabelZip" runat="server" Text="*Zip Code:" CssClass="LabelText"></asp:Label>
</td>
<td>
<asp:TextBox ID="TextBoxZip" runat="server" CssClass="TextBox"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="zipRequiredFieldValidator" runat="server" ErrorMessage="Please enter your zip code."
CssClass="errorMessage" ControlToValidate="TextBoxZip" Text="*" SetFocusOnError="true"
Display="Dynamic" ValidationGroup="infoGroup"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="zipRegularExpressionValidator" runat="server"
ErrorMessage="Please enter a valid zip code(5 digits)." ControlToValidate="TextBoxZip"
ValidationExpression="\d{5}" Text="*" CssClass="errorMessage" SetFocusOnError="true"
Display="Dynamic" ValidationGroup="infoGroup"></asp:RegularExpressionValidator>
</td>
</tr>
protected void Wizard1_NextButtonClick(object sender,WizardNavigationEventArgs e)
{
int index = Wizard1.ActiveStepIndex;
int length = TextBoxComments.Text.Length;
Page.Validate("infoGroup");
if(index == 1)
{
if (Page.IsValid)
{
if (length <= 200)
{
Wizard1.ActiveStepIndex = index + 1;
}
else
{
Wizard1.ActiveStepIndex = index;
}
}
Wizard1.ActiveStepIndex = index +1;
}
else
{
if (Page.IsValid)
{
Wizard1.ActiveStepIndex = index + 1;
}
else
{
Wizard1.ActiveStepIndex = index;
}
}
}
答案 0 :(得分:0)
此步骤应位于检查页面有效性的if条件内。不是吗?
Wizard1.ActiveStepIndex = index +1;
或者它应该是:
if (Page.IsValid)
{
if (length <= 200)
{
Wizard1.ActiveStepIndex = index + 1;
}
else
{
Wizard1.ActiveStepIndex = index;
}
}
Wizard1.ActiveStepIndex = index;
答案 1 :(得分:0)
尝试取消下一次按钮单击,直到验证向导。
protected void Wizard1_NextButtonClick(object sender, WizardNavigationEventArgs e)
{
e.Cancel = !ValidateWizardStep(e.NextStepIndex);
}
答案 2 :(得分:0)
尝试使用jQuery或JavaScript进行验证。我认为它比服务器端验证更好。
总是尝试在客户端进行验证,因为它为您提供了更好的性能,兼容性和许多良好的灵活功能