Jan 24
2008

Anläßlich der BASTA! Konferenz 2008, die Ende Februar in Frankfurt stattfinden wird, hält Dr. Holger Schwichtenberg einen interessanten Vortrag zum Thema "ASP.NET Best Practices" mit dem Schwerpunkt "Was muss eine Website sein?"

Als Anforderungen listet er folgende Punkte auf:

Eine Website muss 

  1. benutzerfreundlich
  2. sicher
  3. performant
  4. schnell fertig
  5. wartbar
  6. in Google auf Platz 1 sein.

Allen genannten Anforderungen bin ich in den vergangenen Jahren immer wieder begegnet. Zu jedem Punkt ließen sich stundenlange Diskussionen veranstalten. Ein Schmunzeln haben mir jedoch die Punkte 4 und 6 abgerungen :-)

 

Tags: Tags:
Nov 15
2007

Im Zusammenhang mit dem Einbinden des Virtual Earth Map Control 6.0 in eine Testseite bin ich über ein kleines, aber feines Problem gestolpert.
Von meiner Testseite aus, die von der Masterpage abgeleitet ist und folglich keinen eigenen Body hat, muss ich auf den Body meiner Masterpage zugreifen und dort per onload ein JavaScript aufrufen. Über den nachfolgend geschilderten Weg ist das ohne Probleme möglich.

Einzufügen im codeBehind meiner Testseite:

private HtmlGenericControl myBody;
protected void Page_Load(object sender, EventArgs e)
{
  myBody = (HtmlGenericControl)Page.Master.FindControl("MyBody");
  if (myBody.Attributes["onload"] != null)
    myBody.Attributes["onload"] += "GetMap();";
  else
    myBody.Attributes.Add("onload", "GetMap();");
}

Es wird über FindControl und über die ID der Body ermittelt. Falls dieser schon ein Onload-Attribut besitzt, wird die JavaScript-Funktion GetMap() an bestehende Skripten angefügt. Ansonsten wird es als alleiniges Skript angefügt.

Allerdings konnte es so auf Anhieb nicht funktionieren. Es erschien folgende Fehlermeldung:

Ausnahmedetails: System.NullReferenceException: Object reference not set to an instance of an object.

Warum? Der Body konnte aus einem einfachen Grund nicht ermittelt werden.

Das "runat=server" fehlt in meinem Body-Tag.
Mit <body id="MyBody" runat="server"> funktionierte der Mechanismus.

Tags: Tags: | |
Sep 18
2007

Mehrsprachigkeit einer ASP.NET 2.0 Website für Elemente wie Controlbeschriftungen, Navigation oder Sitemap ist glücklicherweise ohne großen Aufwand und relativ leicht zu implementieren. Es braucht dazu für jede Sprache, die unterstützt werden soll, ein entsprechendes Ressourcefile wie z.B. "GlobalResources.en.resx". Diese können im Ordner "App_GlobalResources" abgelegt werden.  In den Controls wird die Ressource z.B. auf diesem Weg eingebunden:

<asp:ImageButton ID="ibTheme1" runat="server" AlternateText="<%$Resources:GlobalResources, blueTheme %>" SkinID="themethumb" ImageUrl="~/Assets/Images/blue_theme_thumb.jpg" CommandName="blue" CausesValidation="false" OnCommand="Themepicker_Command" ToolTip="<%$Resources:GlobalResources, blueTheme %>" TabIndex="19" />

Wenn man nun die Anzeige im Browser von der eingestellten Sprache im Browser abhängig machen will, was ja Sinn macht, dann ist der web.config noch eine Zeile Code einzufügen, falls noch nicht vorhanden:

<globalization uiCulture="auto" culture="auto" />

Dann besitzt der oben beschriebene Button in einem mit englischer Sprache konfigurierten Browser einen englischsprachigen ToolTipp. Ist für eine Sprache kein Ressourcefile vorhanden, dann gilt der vorherrschende Standard.

Tags: Tags: |