Avatar billede neuro Nybegynder
31. marts 2002 - 12:31 Der er 7 kommentarer og
3 løsninger

Response Object i min egen Class

Jeg er ved at bygge en simpel Class, men jeg har problemer med at anvende Response objektet i min egen class til at skrive output til klienten.

--> KODE
class iMenu {
       
        private ArrayList menuItems=new ArrayList();
        private int itemNum;
        public string styleShow;
        public int cellSpacing;
                   
        public iMenu() {           
            cellSpacing=0;
            itemNum=-1;
            styleShow="VERTICAL";           
        }
       
        public void addItem(string t) {       
            itemNum++;
            menuItems.Add(t);       
        }
       
        public void showMenu() {       
            for (int i=0;i<itemNum;i++) {
                Response.Write("!");
            }           
        }
       
    };
--> KODE SLUT

Nogen forslag til hvordan jeg kan få Response objektet til at virke i min egen class. Fejlen er:

CS0038: Cannot access a nonstatic member of outer type 'System.Web.UI.Page' via nested type 'ASP.Default_aspx.iMenu'

På forhånd tak.
Avatar billede kedde65 Praktikant
31. marts 2002 - 12:39 #1
Er det ikke fordi du skal nedarve fra System.Web.UI.Page

med koden

Class IMenu inherits
      System.Web.UI.Page

Kedde
Avatar billede neuro Nybegynder
31. marts 2002 - 12:50 #2
det prøvede jeg ..
jeg nedarver nu således:

class iMenu : System.Web.UI.Page { }

men får nu følgende fejl:
System.Web.HttpException: Response is not available in this context

samme kode som før bare hvor jeg nedarver fra System.Web.UI.Page ..

Hvad gør jeg så?
Avatar billede kedde65 Praktikant
31. marts 2002 - 13:45 #3
Der er ihvertfald et ; for meget i slutningen. Men det kan nok ikke gøre det hele.

Hvad der ellers er galt kan jeg ikke lige ummidelbart svar dig på. Jeg kigger dog på det og skal nok vende tilbage igen, hvis jeg finder ud af noget.

kedde
Avatar billede neuro Nybegynder
31. marts 2002 - 14:47 #4
takker =D
venter spændt så. ...
Avatar billede greybeard Nybegynder
03. april 2002 - 15:07 #5
Du prøver at kalde en ikke static metode via klassen.
Du skla have lavet en instans at kalde fra.

Prøv: new Response().Write("!");
Avatar billede snepnet Nybegynder
13. maj 2002 - 23:34 #6
du kan bare sende page-objektet med som parameter, så skulle den være fikset.
Avatar billede neuro Nybegynder
14. maj 2002 - 07:44 #7
jeppejeppe:
tja, men er det ik lidt et hack at gøre det på den måde, jeg mener, den rigtige måde ville vel være at nedarve eller oprette en instans af objektet i min klasse?
Avatar billede snepnet Nybegynder
14. maj 2002 - 18:10 #8
Det ved jeg nu ikke om man kan sige.... som udgangspunkt er Response.Write() ikke noget man kan anbefale at benytte sig af. Hvis du tager et kig på det HTML der kommer ud til browseren kan du også se, at Response.Write() medfører at teksten bliver skrevet før <html> tagget, hvilket man vel ikke kan sige er optimalt (desuden er der formegentlig nogle browsere der helt vil ignorere det). Hvis du er interesseret i at lave klasser der skriver diverse tekster ud til browseren synes jeg du skal begynde at arbejde med Usercontrols eller CustomControls.

Hvis du arver fra System.Web.UI.UserControl, kan du direkte benytte følgende: this.Page.Response.Write().
Avatar billede neuro Nybegynder
15. maj 2002 - 07:43 #9
jeppejeppe:
jeg vil tage et kig på usercontrols .. men kunne selvfølgelig også lade min method i min class returnere også bare response.write, det som jeg får tilbage fra min method ;) men vil da lige kigge på usercontrols, bare for god ordens skyld ;)
Avatar billede snepnet Nybegynder
18. maj 2002 - 21:08 #10
roger... hvis du meget gerne vil skrive til siden direkte fra klassen, uden at sende en reference til siden som parameter kan du godt gøre følgende:

System.Web.HttpContext c = this.Context;
c.Response.Write("test");
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester