2011-10-09 63 views
0

我在一个页面上有一个RequiredFieldValidator问题,其中两个面板表示两个不同的视图,即一次只能看到一个面板,但它们共享同一个提交按钮。ASP.NET验证器不会触发

默认情况下,“BatchReturnPanel”是可见的,“SingleReturnPanel”是隐藏的,在这种情况下页面上工作的所有验证就好了。但是,如果我隐藏“批处理”面板并显示“单..”面板(ChangeViewButton单击事件),那么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> 
+0

为什么你有这个?'UseSubmitBehavior = “假”' – Bastardo

+0

尝试设置'FirstVoucherFieldValidator'的'ValidationGroup'东西比'Voucher'不同,当你点击'ChangeViewButton'如果'BatchReturnPanel'可见,则将其设置为'Voucher'。 – Bastardo

+0

您在哪种方法中填充'MDDropDownList'?你也可以展示这个吗? –

回答

0

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

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

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

希望这有助于

+0

Page.Validate(“Voucher”)有帮助,谢谢 – lekso