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.