2011-03-28 54 views
1

我会保持这个短possble但其击毁我的头。我有一个带有标签和字段的用户控件。我在运行时动态地将用户控件添加到页面。可能有许多用户控件是从数据库中获得的数据动态构建的。这些数据描述了标签名称以及是否应完成文本框。即它是必需的。我有一个提交的主页上有一个验证组。所有用户控件上的验证器都有相同的验证组。到目前为止,我希望这么好。天冬氨酸:RequiredFieldValidator的原因服务器上验证,即使禁用验证程序

用户控件为文本框一个RequiredFieldValidator,看起来都像这样。验证器默认启用。

<asp:TextBox ID="dfControl" runat="server" Text="" ToolTip="ucsAlphanumericEntryDC" Width="95%" CausesValidation="true"/> 
<asp:RequiredFieldValidator ID="rfvContol" runat="server" ErrorMessage="Value is required" EnableClientScript="true" 
    ValidationGroup="ValidateContols" ControlToValidate="dfControl" Display="Dynamic" Enabled="true"></asp:RequiredFieldValidator> 

当我动态加载控件时,我检查一个参数来告诉我该字段是否需要。参数来自代表我将要绘制的控制的数据库。如果字段不是必填字段,则禁用page_preRender中的验证...也在加载中尝试它。

 if (!DisplayRequired) 
     { 
      rfvContol.EnableClientScript = false; 
      rfvContol.Enabled = false; 
      dfControl.CausesValidation = false; 
     } 

到目前为止好。这一切仅适用于客户端验证,只有将“需要显示”设置为true的用户控件保持启用验证程序。

但是从一个提交按钮,我已经连接到同一个验证组的用户控件投稿页面上,我检查了提交,如果它的假我不保存任何东西的IsValid。但是,当页面重新呈现在客户端..我有所有用户控件的错误消息,说他们是必需的...即使我禁用了一些不需要的地方。视图状态是我假设的控件上的默认值。

我也试过不重绘控件与验证,通过在封闭代码,如果(!的IsPostBack)

有任何人任何想法就是为什么验证火的时候,他们都在第一页加载禁止,但没有得到在回发中禁用。

感谢米克

+0

在什么时候上面的代码禁用验证程序被调用?它也被称为回发也? – patmortech 2011-03-28 12:18:59

+0

嗨,帕特,我让他们在页面加载设置,但我想我可能已经打了一些东西。如果将Validator设置为enabled = false作为标记中的默认值,并且我认为它可能没有得到渲染,只是在回发中。我不知道我的,已经做了,但它似乎是now..lol工作......通常开发商...当它的固定和不知道如何:-) – Doiremik 2011-03-28 14:36:58

回答

3

尝试无论是从服务器设置Visible = false,这对我的作品。或者,您也可以使用客户端ValidatorEnable(valid, false);来禁用验证程序。

HTH。

+1

谢谢...不知道有关cilent侧whinning ..好的提示 – Doiremik 2011-03-28 14:37:30