2011-06-22 18 views
5

Mam dwa wystąpienia formantu użytkownika na stronie. Oba mają pola i jeden przycisk przesyłania.Wydanie grupy sprawdzania poprawności użytkownika

Ustawiłem grupy walidacji na polach i walidatorach, ale z jakiegoś powodu podczas sprawdzania poprawności dwóch kontrolerów kontrolek użytkownika uruchomiono.

+0

Czy możesz pokazać nam swój kod? – Teletha

Odpowiedz

3

Użytkownik może wystawić właściwość ValidationGroup w ustawieniach UserControl, którą można ustawić na stronie. Ta wartość powinna być przechowywana w ViewState, aby każda instancja UserControl otrzymywała różne ValidationGroups (jeśli twoja strona przypisuje różne).

Na przykład:

Public Property ValidationGroup() As String 
Get 
    Return CStr(ViewState("ValidationGroup")) 
End Get 
Set(ByVal value As String) 
    SetValidationGroupOnChildren(Me, value) 
    ViewState("ValidationGroup") = value 
End Set 
End Property 

Private Sub SetValidationGroupOnChildren(ByVal parent As Control, ByVal validationGroup As String) 
    For Each ctrl As Control In parent.Controls 
     If TypeOf ctrl Is BaseValidator Then 
      CType(ctrl, BaseValidator).ValidationGroup = validationGroup 
     ElseIf TypeOf ctrl Is IButtonControl Then 
      CType(ctrl, IButtonControl).ValidationGroup = validationGroup 
     ElseIf ctrl.HasControls() And ctrl.Visible = True Then 
      SetValidationGroupOnChildren(ctrl, validationGroup) 
     End If 
    Next 
End Sub 

Jeśli potrzebujesz różnych ValidationGroups w UserControl powyższa funkcja rekurencyjna nie zadziała, to można go przypisać ręcznie od codebehind. Na przykład umieszczając identyfikator UserControl (może być wystarczający) lub identyfikator klienta przed właściwościami ValidationGroup odpowiednich kontrolek. Dobrym miejscem, w którym można by nazwać tę funkcję, byłby PreRender.

+0

Jesteś mężczyzną !!! – Burt

7

Ta metoda działa również:

Dim valGroup = String.format("{0}-validation", Guid.NewGuid()) 

rfv001.ValidationGroup = valGroup 
rfv002.ValidationGroup = valGroup 
rfv003.ValidationGroup = valGroup 
rfv004.ValidationGroup = valGroup 
rfv005.ValidationGroup = valGroup 

btnSubmit.ValidationGroup = valGroup 

Wystarczy tylko ustawić wartości dla ValidationGroup ręcznie.

+0

Preferuję to rozwiązanie. Dzięki – kaiyaq

Powiązane problemy