ASP.NET验证程序不会触发

时间:2011-10-09 22:48:19

标签: asp.net validation

我在带有两个面板的页面上有一个RequiredFieldValidator的问题,它代表两个不同的视图,即一次只能看到一个面板,但它们共享相同的提交按钮。

默认情况下,“BatchReturnPanel”可见并且“SingleReturnPanel”被隐藏,在这种情况下,页面上的所有验证器都可以正常工作。但是如果我隐藏“batch ..”面板并显示“single ..”面板(ChangeViewButton click事件),则requieredFieldValidator“DropDownListFieldValidator”不会启动,并且页面始终被视为已验证。为什么会发生这种情况?如何解决这个问题?谢谢你的帮助/

以下是ASPX页面的摘录:

<div>
<asp:DropDownList ID="MDDropDownList" runat="server"></asp:DropDownList>
<asp:RequiredFieldValidator id="DropDownListFieldValidator" runat="server" ControlToValidate="MDDropDownList" 
InitialValue="-"  ErrorMessage="Please select Master Distributor" EnableClientScript="true" CssClass="error" 
Display="Static" ValidationGroup="Voucher" />

<asp:Panel runat="server" ID="BatchReturnPanel">
<p>
<asp:TextBox ID="FirstVoucherTextBox" runat="server" CssClass="Scanner RRS"></asp:TextBox>
<asp:RequiredFieldValidator ID="FirstVoucherFieldValidator" runat="server" ControlToValidate="FirstVoucherTextBox" ValidationGroup="Voucher"
        ErrorMessage="Valid Voucher ID for the first voucher in batch is required<br>" Display="Dynamic" CssClass="error" EnableClientScript="false"></asp:RequiredFieldValidator>
</p>
</asp:Panel>

<asp:Panel runat="server" ID="SingleReturnPanel" Visible="false">
<p>
<asp:TextBox ID="SingleVoucherTextBox1" runat="server"></asp:TextBox><br />
<asp:TextBox ID="SingleVoucherTextBox2" runat="server"></asp:TextBox><br />
<asp:TextBox ID="SingleVoucherTextBox3" runat="server"></asp:TextBox><br />
</p>
</asp:Panel>
<asp:Button ID="VoucherSubmitButton" runat="server" Text="Enter" 
        OnClick="VoucherSubmitButton_Click" UseSubmitBehavior="false" ValidationGroup="Voucher"/>
</div>

<asp:Panel CssClass="grid_4 box" runat="server" ID="ChangeViewPanel">
<asp:LinkButton runat="server" ID="ChangeViewButton" 
        onclick="ChangeViewButton_Click">Single item return mode</asp:LinkButton>
</asp:Panel>

1 个答案:

答案 0 :(得分:0)

您可以使用验证组和客户端页面验证。

function Validation() {
        Page_ClientValidate('validationGroupName');

        if (!Page_IsValid) {
            return false;
        }
        else {
            return true;
        }
    }

希望这有帮助