- Posted by Oliver on November 28, 2009
Wenn man weiß, wie es geht, ist alles einfach. Aber JavaScript in UserControls innerhalb eines UpdatePanels funktionstüchtig zu bekommen hatte für mich - bis heute! - immer etwas mit Magie zu tun... Hinzu kam heute, dass ich noch Sys.UI.DomElement-Methoden nutzen wollte (aus der AJAX-Bibliothek). Folgende Versuche habe ich gemacht:
1. Page.ClientScript.RegisterClientScriptBlock(GetType(), "helpful_css_" + ClientID, script, true);
2. ScriptManager.RegisterClientScriptBlock(this, GetType(), "helpful_" + ClientID, script, true);
3. Page.ClientScript.RegisterStartupScript(GetType(), "helpful_css_" + ClientID, script, true);
4. ScriptManager.RegisterStartupScript(this, GetType(), "helpful_css_" + ClientID, script, true); // <-- this is it!
Zu 1. und 3. ist zu sagen, dass sie innerhalb einen UpdatePanels nur nach dem ursprünglichen PageLoad funktionieren, nicht nach einem asynchronen Postback. Also fallen sie raus. Außerdem fallen 1. und 2. weg, weil an der Stelle, an der der hier übergebene JavaScript-Code in die Seite generiert wird, der $Sys-Namespace noch nicht definiert ist (ähnlich wie hier: http://encosia.com/2007/08/16/updated-your-webconfig-but-sys-is-still-undefined/).
Bleibt nur 4. Und 4. funktioniert sowohl nach dem initialen PageLoad als auch nach einem async Postback und man kann $Sys verwenden. Wunderbar!
1. oder 2. bleiben allerdings nützlich, wenn man Custom Javascript in die Seite einfügen will, um es weiter unten auf der Seite zu nutzen. Wahlweise kann man natürlich auch die Methode RegisterClientScriptInclude nutzen, um das Javascript in eine eigene Datei auszulagern. Soviel dazu.
Oliver
- Posted by robert on November 24, 2009
Gesucht sind leichtgewichtige Kriterien für das Testen und Abnehmen von Formularen unabhängig von der eigentlichen Funktionalität (Speichern von Ratings, Verschicken von Emails).
Upload-Formular (Datei, Bild, ..) (sollten getestet werden mit)
- eigenwillige Dateinamen, mit Sonderzeichen, mit Punkten, ohne Endung
- zu große Dateien
- nicht unterstützte Dateitypen
Texteingabefelder (sollten getestet werden auf)
- keine Eingabe
- sehr große Eingabe
- komischer Inhalt: Am besten mit chinesisch und türkisch Testen
- Script-Injektion
DropDownlisten/Radios/Checkboxen (sollten getestet werden auf)
- verhalten wenn keine Auswahl getroffen wurde
Allgemeine Kriterien:
- Sinnhaftigkeit von Benutzer-Feedback (Fehlermeldung, Aufforderungen, etc.).
- Vorhanden sein von Benutzer-Feedback
- Ist das Feedback auch in kleine Auflösungen auf dem Bildschirm sichtbar?
Verschiedene Browser
- Feedback sollten in den von der Anwendung unterstützten Browsern getestet werden.
- Interaktivitäte/dynamische Formularelemente sollten getestet werden.
- Posted by Robert on November 20, 2009
Unser “.gitignore” File für die Verwendung mit Visual-Studio und Resharper.
_svn/
.svn/
obj/
[Bb]in/
[Dd]ebug/
[Rr]elease/
_Re[Ss]harper.*
*.resharper
*.resharper.user
*.suo
*.cache
*~
*.swp
- Posted by robert on November 17, 2009
Der schnellste Weg die Builddauer zu ermitteln führt über die Kommandozeile: msbuild /target:Rebuild SomeSolution.sln und am Ende steht dann etwas wie: “Time Elapsed 00:00:16.53”
- Posted by robert on November 17, 2009
Wie lange dauert die Ausführung eines MS-Build Scripts?

Als Ergebnis gibt es einen wirklich sehr, sehr verbosen Build-Output an dessen Ende dann steht:
Und jetzt ist auch klar, dass auf die Gesamt-Build-Zeit von ca.: 35sec 0.49 Sekunden auf das BuildScript selbst entfallen. Ähm.. - gut zu wissen :-)
- Posted by robert on November 15, 2009
- SettingsApp
- SettingsUser
- SettingsSubSystemX
vs.
- AppSettings
- UserSettings
- SubSystemXSettings
beides hat seine für und wider. Variante 1 ist IntelliSense freundlicher und Variante 2 ist näher an der Grammatik.
Ich bin ich ganz klar - soweit die Wortgebilde nicht total obskur werden - meist für Variante 1.
- Posted by Oliver on November 13, 2009
Hier (http://blogs.msdn.com/kcwalina/archive/2004/05/18/134208.aspx#5943757) habe ich eine Methode gefunden, wie man einfach und ohne Mathekenntnisse (für einige von uns ;-)) Flag-Enums definiert:
enum Color
{
None = 0,
Blue = 1 << 0,
Red = 1 << 1,
Yellow = 1 << 2,
Purple = Blue | Red,
Orange = Red | Yellow,
}
Oliver
- Posted by Oliver on November 12, 2009
Bevor ich noch x Mal durchs Web klicke, hier der Einzeiler:
hplCatBox.Attributes["onclick"] = "javascript:$find('" + cpeInqCat.BehaviorID + "').expandPanel(new Sys.EventArgs)";
- Posted by robert on November 8, 2009
“It seems like Google doesn’t really want 100% browser share with Chrome. They just wanted, in so many words, to shame the other browsers (less Firefox than IE) into moving toward HTML 5, into having better JavaScript performance, and those kinds of things.”
- von Scott Swigard in einem Interview mit Sean Campbell von Songbird
- Posted by robert on November 1, 2009
Das Digram soll die tatsächlich Architektur für den _ersten_ Schritt des Einbaus zeigen.
Die physischen Abhängigkeiten sehen nochmal anders aus, da die GUI direkt mit Typen aus der Applikation arbeitet.
Die architektonische "Schichtung" ergibt sich aus der Notwendigkeit "zirkuläre" Referenzen zu verhindern. Aus diesem Grund sind Container und Service-Locater auch physisch getrennt.
Ein volle Entkopplung macht im tatsächlichen Anwendungsfall aus jetziger Perspektive auch keinen Sinn und ließe sich auch leicht nachträglich einziehen.