22. september 2002 - 11:44Der er
12 kommentarer og 2 løsninger
Response i codebehind
Hej Eksperter
Jeg vil lave et histogram, hvor data hentes fra databasen. Det er heller ikke noget problem hvis jeg laver det hele i en aspx fil, men det tillader mit design ikke. Jeg vil min aspx fil kun have en page_Load, hvor jeg kalder default constructoren, som så står for at udføre det hele. Problemet kommer når jeg vil anvende Response.ContentType og Response.OutputStream. Her er noget af min kode:
void Page_Load(Object sender, EventArgs e) { HistogramSpike h = new HistogramSpike(); }
</script> mm. Og den er der jo ingen ben i.
Min codebehind: public HistogramSpike() { b = new Bitmap(width, height, PixelFormat.Format16bppRgb555); Response.ContentType= "Image/jpeg"; int []input= DBTilgang(); Graphics g = Graphics.FromImage(b); doState( input );//henter og forbereder data fra db. drawHistogram(XVal, YVal, max, width, height, g);//tegner histogram b.Save(Response.OutputStream, ImageFormat.Jpeg); b.Dispose(); } Klassen arver selvfølgelig fra Page, og using en hel masse.
Kører jeg dette får jeg fejlen:
Response is not available in this context.
Exception Details: System.Web.HttpException: Response is not available in this context.
Source Error: Line 55: #line default Line 56: Line 57: public histogram_aspx() { Line 58: System.Collections.ArrayList dependencies; Line 59: if ((ASP.histogram_aspx.__intialized == false)) {
Kan nogen hjælpe???
Jeg har desuden prøvet med noget HttpResponse, men det vil have en Object reference (Fra aspx filen går jeg ud fra), og det kan jeg ikke finde ud af. Jeg har også prøvet at kalde metoden vha. en on_Click på en Button (on_Click lå i cs filen)og det virker mærkeligt nok, men det er ikke sådan det skal være.
Det er af stor vigtighed at jeg får dette til at virke, derfor de mange points.
Din Page_Load bør da også være i codebehind. Jeg forstår heller ikke helt den måde hvorpå du kalder HistrogramSpike. Det burde være nok at skrive HistogramSpike(); ...istedet for at oprette et HistogramSpike-objekt.
Du kan ikke bruge Response i contructoren, fordi Response-objektet ikke er oprettet på det tidspunkt, du bliver nødt til at gøre det i Page_Load, som også, som odegaard siger, bør være i din CodeBehind-fil.
Undskyld det sene svar. Nu har jeg prøvet noget af det i foreslå, og uden held. Ang. det forslag om at lave min Page_Load i min cs fil, så lader det ikke til at jeg kommer ind i den ???????
noget af min cs fil: public void Page_Load(Object sender, EventArgs e) { Trace.Write("Test 1"); b = new Bitmap(width, height, PixelFormat.Format16bppRgb555); Response.ContentType= "Image/jpeg"; int []input= DBTilgang(); Graphics g = Graphics.FromImage(b); doState( input );//henter og forbereder data fra db. drawHistogram(XVal, YVal, max, width, height, g);//tegner histogram b.Save(Response.OutputStream, ImageFormat.Jpeg); b.Dispose(); Trace.Write("Test 2"); }
Hele min aspx fil: <%@ Page Language="C#" Inherits="PCV.HistogramSpike" codebehind="HistogramSpike.cs" Trace="True" Debug="True" %> <%@ Import Namespace="PCV" %>
Hvad angår tknudsen's ide, så får jeg at vide, at Object ikke indeholder en definition for ContentType og outputstream (under kompilering af min cs fil): Koden i cs se sådan ud: public HistogramSpike(Object obj) { Trace.Write("Her 2"); b = new Bitmap(width, height, PixelFormat.Format16bppRgb555); obj.ContentType= "Image/jpeg"; int []input= DBTilgang(); Graphics g = Graphics.FromImage(b); doState( input );//henter og forbereder data fra db. drawHistogram(XVal, YVal, max, width, height, g);//tegner histogram b.Save(obj.OutputStream, ImageFormat.Jpeg); b.Dispose(); }
Det virker nu fint med codebehind istedet for src. Desuden fik jeg en fejl når jeg kompilerede om at min fil var initialiseret multible steder. Jeg har også læst et sted (kan desværre ikke huske hvor) at man efter at have kompileret en gang skulle slette src i page direktivet (spørg mig ikke hvorfor, men det virkede). Hvad angår at arve fra Page i CodeBehind, så er det gjort. Jeg vil lige afprøve forslaget for tknudsen før jeg giver pointene.
Jeg har givet de fleste af pointene til simon.ulsnes, da det var hans forslag jeg fik til at virke. tknudsen får også lidt for sine forslag. Jeg har dog ikke fået det til at virke endnu, som min sidste kommentar nok illustrerer. Tak for hjælpen
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.