2009-01-12 47 views
1

我有一个使用RequiredFieldValidator控件和ValidationSummary的应用程序,一旦点击了“Finish”按钮,所有的字段都会被验证。这个页面有几个不同的部分可见或不可见,我注意到验证程序只激活可见控件并忽略不可见控件。这是我的程序使用的有用功能。ASP.NET 2.0 - 验证同一页面上的不可见控件?

但是....

我有一个需要验证是不可见的,因为我分手了一个很长的网页的部分成段的控制。所以我想知道是否有办法手动强制visible = false验证控件(或者是不可见表的一部分的验证控件)在Page.IsValid上验证,而不必再次使它们可见?

在此先感谢!

P.S.我尝试使用ValidationGroup属性来查看是否会捕获它们,但它没有。

回答

1

如果该控件不是可见的,那么html不会被验证。而不是设置Control.Visible = false,而是尝试设置一个css类来隐藏它。

在样式表:

.invisible { visibility:hidden; } 

然后代替。可见=假用途:

Control.CssClass = "invisible"; 
+0

好主意,我喜欢它!简单而灵活。 :) 我会试一下。 – n2009 2009-01-13 16:16:34

0

如果页面被分成多个段并且只显示页面的一部分,那么您是否可以验证显示新段的方法?一旦隐藏了该控件的有效状态,就不应该受到影响。 (除非我猜的依赖性。)。

不要让他们用无效输入切换页面的片段。

另一种方法是使用css使控件不可见,而不是服务器端。控件可以显示在div中:none;所有控件都将与验证摘要一起呈现。

0

如果您将这些控件设置为不可见的服务器端,那么它们甚至不会呈现在客户端上进行验证。

您是否使用AJAX在您的部分之间切换/使控件不可见?如果是这样,那么在切换控件隐形之前,您应该验证这些部分页面回发的控件(如Jeff Martin所建议的)。

我想我们需要一些关于如何做这件事的更多信息来给你一个很好的答案。


好吧,所以没有AJAX(根据您的评论)......如果你使用ASP.NET验证控件他们有一个客户端部分和服务器端部分。你可以看到验证器在代码隐藏的事件处理程序中是否有效。你可能需要做一些特定的事情,让他们在服务器端启动验证代码,并且你的不可见控件可能不会在多次回发之间保留它们的值。但它应该是可行的。

这里的要点是可以设置ASP.NET验证控件,以便它们不会执行任何客户端操作,但它们仍然提供验证服务器端。你基本上就在那条船上。

我认为this MSDN article有你需要的。

+0

没有使用AJAX,当单击“完成”时,页面回发。迷你页面之间切换的是一个asp.net LinkBut​​ton,它根据它们在哪个页面上循环可见控件共7页),该按钮也回发,代码在服务器端(在隐藏代码页) – n2009 2009-01-13 16:15:32

0

针对迈克康斯托克的帖子第二评论(我没有足够的声誉尚未就此发表评论:()...

删除间距尝试:

.invisible { visibility:hidden; display:none; }