2009-07-22 14 views
0

Ok, ich habe ein großes Problem mit einer Steuerung, die ich verwende.Validierung bei dynamischen Steuerungen

Die Website Ich mache verwendet benutzerdefinierte Einheiten für einige Felder in der Kasse (die beschlossen, dass Pferde Maßnahmen in Hände um Gottes Willen sein sollte ?!), und wir müssen in der Lage sein, auf der Grundlage der Einheit zu validieren ausgewählt, dh sie können zwischen 15 und 40 Hände (oder etwas) haben, das ist 200 - 900 cm (diese Zahlen sind völlig zufällig fyi).

Normalerweise würde dies mit serverseitiger Validierung validiert werden, damit wir die aktuelle Einheit verarbeiten, die Eingabe entsprechend konvertieren und mit den dynamischen Grenzen vergleichen können.

Leider werden diese Steuerelemente beim Laden der Seite dynamisch auf die Seite gerendert. Daher wird die serverseitige Überprüfung nicht ausgelöst, da sie technisch nicht auf Post-Back existiert.

Was ich tun will, um dies zu vermeiden, ist die Verwendung einer anderen Methode, die wir zuvor verwendet haben, ähnlich einem Standard-Regex-Validierer, aber gehackt, um Code zu erlauben (ich habe es nicht geschrieben, aber sie scheinen zu funktionieren).

Dies ist jedoch nicht auf der Seite, und so müsste ich über HttpContext oder eine andere Methode auf das Seitenobjekt zugreifen, um die richtigen Einheiten aus einem verwandten Dropdown zu bekommen, kann jemand eine Möglichkeit vorschlagen oder eine bessere Möglichkeit, die Kontrollen zu validieren?

Oh, und ja, das ist unglaublich verworren und zufällig.

Cheers, Ed

+0

Die Königin entschied sich für Hände, denke ich, da sie kein Maßband auf ihr hatte, als sie eines Tages eines der Pferde inspizierte. –

+0

Sie sprechen über Seiten, onload. Ist es ASP? Genauer gesagt =) –

+0

Vielleicht war mein letzter Kommentar nur Folklore, aber Clement hat einen Punkt. Wenn Sie diese Serverseite überprüfen möchten, können Sie einfach die Werte aus dem Formular oder der Abfragezeichenfolge einlesen und prüfen, ob sie gültig sind. Die Einheit ist nicht wirklich wichtig, wenn Sie Validierungskriterien für das Feld haben oder eine Art zu sagen, was die Kriterien sein sollten. –

Antwort

3

Es gibt ein paar Punkte hier zu machen: Zum einen können Sie Postbacks aus Kontrollen erhalten, die dynamisch erzeugt werden, so lange, wie Sie sie zu Beginn der mit einer konsistenten ID neu generieren Jedes Postback-Ereignis, sobald Sie sie neu erstellt haben, verbindet ASP.NET den ViewState und whatnot erneut und löst anschließend Ihre Callback-Methode aus.

Als nächstes können Sie das ASP.NET Ajax-Framework verwenden, um eine statische Methode auf Ihrer Seitenklasse mit Hilfe von Javascript (im Wesentlichen wird es ein Mini-Web-Service) aufzurufen. Checkout this Link, wie es geht. Dadurch können Sie möglicherweise Javascript schreiben, um eine Validierungsmethode auf der Serverseite aufzurufen. Es ist nur statisch, also müssen Sie alle Daten, die Sie benötigen, von Ihrem clientseitigen Code übergeben.

Schließlich könnten Sie mehrere Regex-Validatoren haben, einen für jede Einheit, und dann ein Javascript im Onchanged-Event für das Einheitenfeld verwenden, um den richtigen zu aktivieren/deaktivieren. Ich habe es nicht selbst gemacht, aber ich glaube, Sie können einen Validator einfach über Javascript ausschalten. (Checkout this link)

+0

Gute Gedanken zu den mehreren Validatoren, werde ich diesen Weg nehmen. Ich werde die Antwort akzeptieren, wenn SO aufhört, fehlerhaft zu sein, und lasst mich auf den Haken = D klicken –

Verwandte Themen