2011-07-06 6 views
5

Bir ASP.NET sayfasında birkaç bölüm var ve bunları ayrı ayrı doğrulamanız gerekiyor.ValidationSummary ValidationGroup belirtildiğinde çalışmaz

Her bölümün kendi doğrulama özeti bölümü vardır, bu yüzden ValidationSummary etiketini ValidationGroup özniteliğiyle kullanmayı düşündüm ancak çalışmaz.

Aşağıdaki kod çalışır ancak sayfa tüm denetimleri doğrular: (Ben sadece sihirbazın sonraki sayfaya gitmek göndermek üzerinde, hiçbir doğrulama) çalışmıyor izlerken

<asp:TextBox ID="field1" runat="server" TabIndex="1" MaxLength="20" /> 
<asp:RequiredFieldValidator ID="field1RequiredValidator" ControlToValidate="field1" runat="server" 
Display="None" ErrorMessage="mandatory 1" /> 

<asp:TextBox ID="field2" runat="server" TabIndex="2" MaxLength="20" /> 
<asp:RequiredFieldValidator ID="field2RequiredValidator" ControlToValidate="field2" runat="server" 
Display="None" ErrorMessage="mandatory 2" /> 

.... 

<asp:ValidationSummary ID="validationSummary" HeaderText="Sumary" runat="server" /> 

:

<asp:TextBox ID="field1" runat="server" TabIndex="1" MaxLength="20" /> 
<asp:RequiredFieldValidator ID="field1RequiredValidator" ControlToValidate="field1" runat="server" 
Display="None" ErrorMessage="mandatory 1" ValidationGroup="xxxx" /> 

<asp:TextBox ID="field2" runat="server" TabIndex="2" MaxLength="20" /> 
<asp:RequiredFieldValidator ID="field2RequiredValidator" ControlToValidate="field2" runat="server" 
Display="None" ErrorMessage="mandatory 2" ValidationGroup="xxxx" /> 

.... 

<asp:ValidationSummary ID="validationSummary" HeaderText="Sumary" runat="server" ValidationGroup="xxxx" /> 

Burada nelerin eksik? Ek kurulum gerekli mi yoksa başka bir şey var mı?

cevap

15

ASP.NET varsayılan davranış kullanıcı belirtilmedi ValidationGroup olan bir düğmesini tıkladığında (ve true için CausesValidation kümesi vardır) ne zaman bir doğrulama grubuna ait olmayan tüm doğrulama kontrolleri valide olmasıdır. Bu nedenle, belirli bir grubu doğrulamak için, doğrulamaya neden olması gereken ValidationGroup özelliğini (ve muhtemelen CausesValidation özelliği) ayarlamanız gerekir.

Ayrıntılar ve örnek için MSDN documentation for Button.ValidationGroup'a bakın.

DÜZENLEME: Sayfadaki ALL gruplarını doğrulamanız gerekiyorsa, en doğru yol elbette doğrulama gruplarını kullanmamaktır. Eğer Ancak sadece bazı (ancak birden fazla) grupları doğrulamak istiyorsanız, çağırarak (düğmesinin tıklatma işleyicisi) sunucuda yapabilirsiniz: Bu istemci tetiklemez o

Validate("groupOne"); 
Validate("groupTwo"); 
// ... 

Not -side doğrulama. Tek bir tuşa tıklama ile birden çok doğrulama grubunu tetikleme hakkında bir tartışma için örneğin this post'a bakın.

DÜZENLEME: ASP.NET için yeniden kullanılabilen bir "çoklu doğrulama grubu düğmesi" nasıl yapılandıracağınızı açıklayan a blog post kodunu buldum. Denemedin, ama umut verici görünüyor.

+0

Hey ... işe yaradı, düğmeyi de belirtmem gerektiğini bilmiyordum. Teşekkürler! Ama şimdi başka bir sorunum var. Sayfamda daha fazla doğrulama grubu var. Onlardan TÜM'ü sadece bir gönderme düğmesiyle nasıl tetiklerim? – user0971832

+0

Tek bir düğmeden tüm doğrulamayı tetiklemeniz gerekiyorsa, neden onlar için farklı doğrulama grubu belirttiniz. – rahularyansharma

+1

@rahularyansharma: Çünkü sayfam bölümlere ayrılmıştır. Her bölümün kendi ValidationSummary'ı vardır (yani hata özeti, hatalı olan alanlarla aynı bölümde gösterilmelidir), dolayısıyla bunları gruplandırmam gerekir. Ama aynı zamanda sadece tek bir gönderme düğmesiyle tetiklenmesini istiyorum. – user0971832