Avatar billede casualty Nybegynder
09. november 2004 - 15:08 Der er 10 kommentarer og
1 løsning

ASP.Net og codebehind

Kort og godt...

Når man udvikler i ASP.Net og anvender codebehind, så bruger den de prekompilerede filer. Hvorfor skal der så inde fra aspx siden henvises til:
<%@ Page language="c#" Codebehind="CodeBehind.cs" Inherits="ASPPlus.CodeBehind" %>

Ja hvorfor skal der henvises til "CodeBehind.cs" når det er kompileret? *.cs er da umopilerede filer?

Mvh Casualty
Avatar billede casualty Nybegynder
09. november 2004 - 15:20 #1
Haha... Sikke en slåfejl umopilerede = ukompilerede
Avatar billede casualty Nybegynder
09. november 2004 - 15:37 #2
Og er der i øvrigt nogen der kan fortælle mig hvad "AutoEventWireup=false" betyder?
Avatar billede arne_v Ekspert
09. november 2004 - 15:46 #3
Jeg mener at det er en instruktion til Visual Studio om at den skal
compile den fil.
Avatar billede burningice Nybegynder
09. november 2004 - 17:14 #4
ja... det er en vs.net-ting - compileren vil umiddelbart ignorere de tags.
Avatar billede snepnet Nybegynder
09. november 2004 - 19:06 #5
Codebehind="CodeBehind.cs" er en instruktion til Visual Studio om hvad den fil der indeholder din codebehind hedder, og den benyttes alene så du kan få åbnet filen når du f.eks. vælger view code på aspx-filen (det er sådan set overhovedet ikke en ASP.NET ting, men en visual studio designting... den ignoreres fuldstændig af runtimemiljøet).

AutoEventWireup er noget helt andet.... Det er en property du kan angive en default på flere steder (machine.config, web.config eller direkte som angivet i en aspx/ascx fil), og som angiver om du skal wire dine events manuelt (som page_load).

VS sætter pr. default værdien til false, og skriver denne kode :

        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }

        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);
        }

Altså den sikrer at OnInit overskrives så InitializeComponent kaldes, og i den wires så page_load-eventhandleren.

hvis du angiver den til true - kan du undlade begge metoder, og det vil stadig fungere på samme måde som før.

der skulle være situationer (som jeg ikke kender), hvor der skulle være risiko for et performancehit, hvis du ikke wire dem manuelt - og det er muligvis det der er årsagen til at VS gør det sådan.

mvh
Avatar billede casualty Nybegynder
12. november 2004 - 14:53 #6
1000 Tak for hjælpen.... Så fik vi afleveret læg et svar så uddeler jeg points
Avatar billede burningice Nybegynder
12. november 2004 - 17:31 #7
snepnet>> hvis man bruger AutoEventWireUp="true" bliver der automatisk koblet eventhandlers til en del events - kan ikke lige huske exact hvilke det er. Og ja, hvis man ikke har brug for disse eventhandlers giver det da et unødigt perfomancehit.
Avatar billede snepnet Nybegynder
12. november 2004 - 18:46 #8
hej cyberfessor :o)

Jeg er ikke sikker på at det er de de omtaler som potentielt performancehit ... den er formuleret sådan her :

You may use the AutoEventWireup attribute to code ASP.NET Web Forms and Web User Controls. When you set the value of the AutoEventWireup attribute to true, the outcome is simple code. If you set the value of the AutoEventWireup attribute to false under certain circumstances, the ASP.NET Web Application performs better.

Du kan se det her :
http://support.microsoft.com/default.aspx?scid=kb;EN-US;317690

Jeg har ikke selv gravet yderligere i det, men umiddelbart synes jeg ikke formuleringen indikerer, at det blot er et overhead i forbindelse med eventwirering... Men som sagt - jeg har ikke kigget yderligere på det, så det kan jo sagtens være at det bare er det der hentydes til.

mvh
snepa
Avatar billede burningice Nybegynder
12. november 2004 - 18:55 #9
har fundet dette:

Avoid the Autoeventwireup Feature

Instead of relying on autoeventwireup, override the events from Page. For example, instead of writing a Page_Load() method, try overloading the public void OnLoad() method. This allows the run time from having to do a CreateDelegate() for every page.

Kan være det bare er mig der er dårlig til at formulere mig, men det er netop disse eventhandlere, delegates om man vil, som bliver oprettet automatisk når at AutoEventWireUp bliver sat til true, og det tager jo som sagt lidt perfomance-tid at gøre det, og hvis det er unødvendigt, så kan man sætte den til false.

VS.Net gør så det at den kun opretter eventhandlere til det som der er brug for - personligt foretrækker jeg at bruge override-metoden.
Avatar billede snepnet Nybegynder
13. november 2004 - 11:19 #11
ahhh..... jamen så er sikkert bare det der henvises til i den anden artikel også. og du formulerer dig bestemt ikke dårligt. jeg tror bestemt heller ikke jeg misforstod dig, men i en typisk applikation er det vanskeligt at forestille sig, at en CreateDelegate() fra eller til skulle gøre den store forskel.
(en typisk listeside med et datagrid der viser 100 rækker hvor der abboneres på f.eks. ItemDataBound er jo ikke sjældent set).

det var egentlig derfor jeg fik en fornemmelse af, at der kunne være andre forhold der spillede ind omkring det med autoeventwireup (altså at der udover at der wireringen også skete andet... fordi de var wired).

mvh
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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