Aus .aspx.cs auf eigenes DOM zugreifen?

06/09/2007 - 15:51 von Golo Roden | Report spam
Hallo,

ich möchte eine Webseite vor ihrer Auslieferung noch einmal
modifizieren, indem ich einige Sachen am DOM àndere. Bloß - wie mache
ich das?

Gibt es eine Möglichkeit, wie eine Codebehinddatei auf das DOM der
zugehörigen ASPX zugreifen kann?

FindControl ist nicht ganz das, was ich suche ... hierzu müsste ich dem
body-Tag ja beispielsweise eine ID zuweisen ...

Meine zweite Idee war nun, ein XmlDocument vom Response.OutputStream zu
erzeugen, dabei erhalte ich aber die Fehlermeldung
"NotSupportedException" ...

Gibt es da einen Weg?

Viele Grüße,


Golo
 

Lesen sie die antworten

#1 Günter Prossliner
06/09/2007 - 16:30 | Warnen spam
Hallo Golo!

ich möchte eine Webseite vor ihrer Auslieferung noch einmal
modifizieren, indem ich einige Sachen am DOM àndere. Bloß - wie mache
ich das?



Vorweg: Über DOM kann die Seite klarerweise nur am Client modifiziert
werden. Um die Seite am Server zu modifizieren musst Du z.b. über die
Controls-Objekte gehen.

Gibt es eine Möglichkeit, wie eine Codebehinddatei auf das DOM der
zugehörigen ASPX zugreifen kann?



Du kannst in Codebehind clientseitigen Scriptcode rendern, welcher bei der
Auslieferung an den Client (eventuell) ausgeführt wird.

z.b.:
ClientScripting.RegisterStartupScript(this.GetType(), "modification",
"document.body.innerHTML += 'modified'", true);

FindControl ist nicht ganz das, was ich suche ... hierzu müsste ich
dem body-Tag ja beispielsweise eine ID zuweisen ...



Der body ist im DOM immer unter "document.body" ansprechbar.

Andere Elemente kannst Du mittels derer ClientID ansprechen.

z.b.:
string script =
string.Format("document.getElementById('{0}').style.color='red';",
this.TextBox1.ClientID");
ClientScripting.RegisterStartupScript(this.GetType(), "modification2",
script, true);


Meine zweite Idee war nun, ein XmlDocument vom Response.OutputStream
zu erzeugen, dabei erhalte ich aber die Fehlermeldung
"NotSupportedException" ...



1. Der OutputStream ist nicht zwangslàufig XML.
2. Der OutputStream wird als Stream nur geschrieben. Einfach von diesem
(jederzeit) zu lesen ist deshalb nicht möglich. Du kannst den Responsstream
aber mittels eines ResponseFilters (Response.Filter) modifizieren. Der
Reponse-Filter ist selbst ein Stream welche zwischengeschaltet wird.



OK?
mfg GP

Ähnliche fragen