97 messaggi dal 04 ottobre 2004
Ho provato ad utilizzarla, togliendo le parti che non mi interessavano nel metodo modifica, che ora è così:

private string Modifica(string tutto)
{

if (tutto.IndexOf("<!-- contenuto -->")!=-1)
{        
tutto=tutto.Replace("<!-- contenuto -->","<div id=\"cella_centrale\">\n<img src=\"media/curva-bsx.gif\" id=\"curva_bsx\" width=\"4\">\n<img src=\"media/curva-bdx.gif\" width=\"4\" id=\"curva_bdx\">\n<div id=\"contenuto\">");
}
if (tutto.IndexOf("<!-- fine contenuto -->")!=-1)
{
tutto=tutto.Replace("<!-- fine contenuto -->","</div>\n</div>");
}
if (tutto.IndexOf("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" >")!=-1)
{
tutto=tutto.Replace("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" >","<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
}
if (tutto.IndexOf("<body MS_POSITIONING=\"GridLayout\">")!=-1)
{
tutto=tutto.Replace("<body MS_POSITIONING=\"GridLayout\">","<body onresize=\"contentfix(true)\" onload=\"contentfix(true)\">");
}
if (tutto.IndexOf("<body>")!=-1)
{
tutto=tutto.Replace("<body>","<body onresize=\"contentfix(true)\" onload=\"contentfix(true)\">");
}
return tutto;


Poi ho fatto una pagina da dove tutte le altre pagine eriditano, per evitare di dovermi ricordare di inserire sempre queste rigne nell'evento load:

HtmlFilter hf = new HtmlFilter(Response.Filter);
Response.Filter = hf;      
this.RegisterClientScriptBlock("header","<script src=\"include/javascript.js\"></script>\n<STYLE type=text/css>\n@import url(\"style/base.css\");\n@import url(\"style/struttura.css\");\n</STYLE>");    


Il problema è che mi tronca l'html risultante


Cosa ho sbaglaito? cosa ci posso fare?

grazie ciao
Daniele
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
Ho dato un'occhiata a tutte i replace che fai. Non vedo niente di non corretto, ma ti do il consiglio di fare il debug passo passo di questa funzione per verificare dove il contenuto HTML viene perso.

Di più non posso consigliarti
97 messaggi dal 04 ottobre 2004
In debug, arrivo fino a

return tutto;

e se guardo il valore di "tutto" è esattamente l'html che voglio, se poi seguo nel debug ovviamente mi va dentro allo Stream.write e mi chiede se voglio disassemblarlo, gli ho detto di si ma sinceramente non ho voglia di leggermi tutto quel codice scritto in assembly

altre idee?
ma a te funziona?
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
E be', certo che a me funziona

Se con il debug in "tutto" hai il contenuto html corretto, probabilmente hai commesso un errore nella sezione di codice che preleva questo contenuto e lo invia al browser.

Un'annotazione: nel tuo codice per quella pagina utilizzi qualche "response.write" per inserire il contenuto?

Ciao
97 messaggi dal 04 ottobre 2004
La sessione di codice di cui parli è questa?

public override void Write(byte[] buffer, int offset, int count)
{
  try
  {
  string testo=System.Text.Encoding.Default.GetString(buffer,offset,count);
buf.Append(testo);
if (testo.ToLower().IndexOf("</html>")!=-1)
{
  _sink.Write(System.Text.Encoding.Default.GetBytes(Modifica(buf.ToString())),0,testo.Length);
}
}
catch (Exception ex)
{
_sink.Write(System.Text.Encoding.UTF8.GetBytes(ex.Message),0,ex.Message.Length);
 }
}


Nelle mie pagine non uso nessuna response.write()
La tua funziona, ora l'ho provata  era solo per sperare che non l'avessi mai provata

Idee?
Per me sarebbe utilissima questa funzionalità, perche devo inserire in ogni pagina una serie di div e direttive per far funzionare bene la grafica (che è complessa) e sarebbe stato bellissimo non dovermene preoccupare in ogni pagina.

ciao Daniele
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
Se invii il codice html direttamente senza modifica viene visualizzato tutto correttamente?
public override void Write(byte[] buffer, int offset, int count) 
{ 
try 
{ 
string testo=System.Text.Encoding.Default.GetString(buffer,offset,count); 
buf.Append(testo); 
if (testo.ToLower().IndexOf("</html>")!=-1) 
{ 
_sink.Write(System.Text.Encoding.Default.GetBytes(buf.ToString()),0,testo.Length); 
} 
} 
catch (Exception ex) 
{ 
_sink.Write(System.Text.Encoding.UTF8.GetBytes(ex.Message),0,ex.Message.Length); 
} 
}
Ciao
97 messaggi dal 04 ottobre 2004
Si così funziona tutto regolarmente

bhè se non altro abbiamo individuato il problema, ma quale delle tante replace fa casino?

ciao e ancora grazie
Daniele
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
Se senza la funzione "Modifica" funziona tutto correttamente non ti rimane altro che ricontrollare il tuo codice di modifica passo a passo con il debugger di Visual Studio (se disponi di quell'ambiente di sviluppo) e controllare eventuali anomalie.

Di più non posso suggerirti

Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.