tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
438
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Oct 2004
    Ort
    Bayern
    Beiträge
    307
    Hallo,

    ich habe mir selbst einen Validator erstellt. Im Page Load werden, so fern noch kein PostBack stattgefunden hat, sämtliche benötigten Controls und kleinere Informationen zur Validierung übergeben. Soweit - so gut.

    Intern habe ich eine Collection, welcher ich die UniqueID des Controls übergebe.
    Diese sieht dann ungefähr so aus:

    ValidateControls[0].UnqiueID = "TextBox1"
    ValidateControls[0].Type = Type.EMail

    ValidateControls[1].UnqiueID = "TextBox2"
    ValidateControls[1].Type = Type.String


    Ich kann dieser Collection die Controls nicht selbst adden, denn sonst würden sie ja nicht mehr in der Collection der Page geaddet sein - oder? Rufe ich jetzt die Funktion zur Validierung auf (i.d.R. beim Speichern), muss ich jetzt sämtliche Controls rekursiv durchlaufen und die Gleichheit der UniqueIDs überprüfen, daraufhin weiß ich erst, ob es sich um das Control handelt. Meine Frage wäre jetzt, ob ich die Controls auch irgendwie anders ansprechen kann OHNE für jede UnqiueID sämtliche Controls der Page zu überprüfen.
     
    Being crazy is normal!
    I developed a Webradio
    Please visit my web development blog

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Natürlich kannst du die Controls ein eine Auflistung deiner Wahl stecken. Aus der Controls-Auflistung fliegen sie deshalb nicht hinaus. Ausserdem bräuchtest du gar keine eigene Collection dafür. Kannst ja ohnehin über die Controls-Collection iterieren.
     

  3. #3
    Registriert seit
    Oct 2004
    Ort
    Bayern
    Beiträge
    307
    Ich kann ein Object nicht zu zwei Collections hinzufügen. Zumindest ging es mit Framework 1.1 nicht. Würde ich das machen, würde das Object aus der anderen Collection rausfliegen.

    Wie meinst du das mit "Controls-Collection iterieren" genau?
     
    Being crazy is normal!
    I developed a Webradio
    Please visit my web development blog

  4. #4
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Moment: Hier gilt es zu unterscheiden:
    • Handelt es sich um eine Controls-Auflistung?
    • Handelt es sich um eine Liste, Hashtable etc.?

    In ersterem Fall ist die Sache klar: Das selbe Control kann nur einmal angezeigt werden. Bei einer Änderung würde es zu unterschiedlichen Darstellungen kommen und das wäre wohl ein kleines Problem.

    Im zweiteren Fall ist die Geschichte anders: Zu Listen, Hashtables etc. kannst du das Control beliebig hinzufügen. Dort wird es ja auch nicht angezeigt, sondern nur eine Referenz auf das jeweilige Control gehalten. Änderungen am Control sind den Listen egal.

    Controls-Auflistung? Naja, sollte im Grunde schon klar sein was das ist, oder? Die Auflistung der anzuzeigenden Controls eines Containers (Page, Panel, etc.)
     

  5. #5
    Registriert seit
    Oct 2004
    Ort
    Bayern
    Beiträge
    307
    Okay, danke erstmal.

    Jetzt habe ich ein weiteres Problem. Da ich die Controls lediglich einmal adden will (Page_Load), muss ich mir die Controls ja irgendwo merken:

    Dazu verwende ich folgende Klasse:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    
        [Serializable()]
        public class MM_ValidatorItem
        {
            protected WebControl m_Control;
            private MM_Validator.DataType m_Type;
            private bool m_AllowEmpty;
     
            public MM_ValidatorItem(WebControl Control, MM_Validator.DataType Type)
            {
                m_Control = Control;
                m_Type = Type;
                m_AllowEmpty = false;
            }
     
            public MM_ValidatorItem(WebControl Control, MM_Validator.DataType Type, bool AllowEmpty)
            {
                m_Control = Control;
                m_Type = Type;
                m_AllowEmpty = AllowEmpty;
            }
     
            public WebControl Control
            {
                get
                {
                    return m_Control;
                }
            }
     
            public MM_Validator.DataType Type
            {
                get
                {
                    return m_Type;
                }
            }
     
            public bool AllowEmpty
            {
                get
                {
                    return m_AllowEmpty;
                }
            }
        }
    Im Control nutze ich
    Code :
    1
    
    protected Collection<MM_ValidatorItem> InvalidControls = new Collection<MM_ValidatorItem>();
    In der SaveViewState Funktion schreibe ich diese Collection in die Session. Daraufhin erhalte ich folgenden Fehler:
    Unable to serialize the session state. In 'StateServer' and 'SQLServer' mode, ASP.NET will serialize the session state objects, and as a result non-serializable objects or MarshalByRef objects are not permitted. The same restriction applies if similar serialization is done by the custom session state store in 'Custom' mode.
     
    Being crazy is normal!
    I developed a Webradio
    Please visit my web development blog

Ähnliche Themen

  1. Dynamische Webcontrols (abhängig von Benutzereingaben)
    Von Ceppi im Forum .NET Web und Kommunikation
    Antworten: 3
    Letzter Beitrag: 22.07.10, 11:50
  2. Antworten: 0
    Letzter Beitrag: 11.08.08, 17:16
  3. Antworten: 2
    Letzter Beitrag: 05.08.05, 08:45
  4. dynamische Sichtbarkeit von WebControls im DataGrid
    Von Pauline im Forum .NET Archiv
    Antworten: 0
    Letzter Beitrag: 08.02.05, 17:33
  5. Zugriff auf WebControls aus einer anderen Klasse
    Von phunkydizco im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 09.09.03, 18:54