Avatar billede martinhrj Nybegynder
09. juli 2003 - 11:25 Der er 13 kommentarer og
2 løsninger

Er alle metoder statiske?

Jeg er lige gået igang med ASP.NET (c#), og har læst mig til, at al C# kode bliver kompileret én metode ad gangen, når den (metoden) første gang bliver brugt.

Betyder det så, at alle metoderne er statiske? Og kan man stadig oprette instancer af sine egne klasser?

1. Hvis nu jeg skriver <% User bruger = new User("martin"); %> får jeg så ikke en instans, som kun jeg bruger?

2. Hvis jeg laver en klasse og nedarver fra den til min aspx-fil. Når jeg så kalder en metode i den klasse, bliver den så udført synkront på serveren? Eller er jeg sikker på, at jeg er den eneste der bruger metoden? (eller kan jeg blive sikker på det? Måske noget synchronized?)

3. Som tillægssp.: Hvis jeg igen nedarver en .cs-fil til min .aspx-fil. Er det så ikke muligt at arbejde med cookies eller sessions i min .cs-fil. Det har jeg nemlig fået nogle mystiske fejl når jeg gør!
Avatar billede martinhrj Nybegynder
09. juli 2003 - 11:28 #1
Ad 1.: User er selvfølgelig en klasse jeg selv har lavet! Med constructor User(string name){...}
Avatar billede repsak Nybegynder
09. juli 2003 - 11:49 #2
Nej alle metoder er ikke statiske.
Du ka godt oprette instanser af egne klasser
1: forstår ikke lige hvad det skal hjælpe...?
2: Der en en funktion som hedder Application.Lock() (tror ikke at syn. kan bruges her
3: Jo du kan - du må være mere konkret :-)
Avatar billede martinhrj Nybegynder
09. juli 2003 - 12:09 #3
For lige at tage det i den forkerte rækkefølge, så sp.3.
Jeg får følgende fejlbesked:

Compiler Error Message: CS0103: The name 'Session' does not exist in the class or namespace 'sessionAlter'

Min sessionAlter-klasse ser således ud:
//--------------------------------------------
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public class sessionAlter {

    protected TextBox Key;

    public void AddClicked(Object Sender, EventArgs e)
    {
      Session[Key.Text] = Value.Text;
    }

    public void RemoveClicked(Object Sender, EventArgs e)
    {
      Session.Remove(Key.Text);
    }
}

//--------------------------------------------


Min aspx-fil ser således ud:
//--------------------------------------------
<%@ Page Language="C#" Inherits="sessionAlter" src="NewFile.cs" %>
<html>
<head>
</head>
<body>
    <h3>Current items in Session
    </h3>
    <form method="post" runat="server">
        <table border="1">
            <tbody>
                <tr>
                    <td>
                        <b>Item Name</b></td>
                    <td>
                        <b>Value</b></td>
                </tr>
                <%
  String strSesKeyName;
  String strSesItem;
  for(int i=0; i<Session.Count; i++) {
    strSesKeyName = Session.Keys[i];
    strSesItem = (String) Session[i];
    Response.Write("<tr><td>" + strSesKeyName + "</td><td>" +
                    strSesItem + "</td></tr>");
  }
%>
            </tbody>
        </table>
        <br />
        Key
        <asp:textbox id="Key" runat="server"></asp:textbox>
        Value
        <asp:textbox id="Value" runat="server"></asp:textbox>
        <br />
        <asp:button id="Button1" onclick="AddClicked" runat="server" text="Add/Modify Key/Value pair"></asp:button>
        <asp:button id="Button2" onclick="RemoveClicked" runat="server" text="Remove Key"></asp:button>
    </form>
</body>
</html>
//--------------------------------------------
Avatar billede martinhrj Nybegynder
09. juli 2003 - 12:11 #4
Application.Lock(); Den må jeg lige prøve at kigge nærmere på!
Avatar billede repsak Nybegynder
09. juli 2003 - 12:44 #5
din side skal arve fra Page
class dinklasse : Page{
//nu har du adgang til Session
}
Avatar billede repsak Nybegynder
09. juli 2003 - 12:48 #6
Det er heller ikke så god stil at smide
<%
  String strSesKeyName;
...
%>
ind i din aspx fil - specielt ikke når du har en .cs-fil
Avatar billede repsak Nybegynder
09. juli 2003 - 12:50 #7
Application.Lock();
//kode som kun må udføres af én ad gangen
Application.UnLock();
Avatar billede repsak Nybegynder
09. juli 2003 - 12:52 #8
Du mangler vist også:
protected TextBox Value;
Avatar billede quaser Nybegynder
09. juli 2003 - 12:55 #9
1) Ja du får kun en instance. Og kan selvfølgelig oprette så mange som du nu har lyst til.
2) Du har jo kun en instance så der er ingen der kan lave knuder der.
Hvis der er en anden der kalder den samme side bliver der lavet en ny instance.
3) Som repsak skriver skal den side som din aspx nedaver være af typen Page.
Avatar billede martinhrj Nybegynder
09. juli 2003 - 13:11 #10
Super! Nu virker det med sessions i hvert fald! Og de andre ting virker ret simple :)

Lige et sidste sp.: Skal man ALTID nedarve fra Page, i sine .cs-filer?
Avatar billede repsak Nybegynder
09. juli 2003 - 13:14 #11
Ja! Hvis de bruges i forbindelse med aspx... Hvis du laver din egen klasse som ikke repræsenterer kontroller så behøves du ikke.

Kort sagt: hvis du i din aspx fil skriver Inheirt="MinKlasse" så skal MinKlasse arve fra Page :-)
Avatar billede martinhrj Nybegynder
24. juli 2003 - 02:24 #12
Det er vist på tide at lukke ;)

Tak for hjælpen, og det gode input!
Avatar billede repsak Nybegynder
24. juli 2003 - 11:15 #13
selv tak... :-)
lukker du?
Avatar billede martinhrj Nybegynder
24. juli 2003 - 11:23 #14
Hmm.. det troede jeg egentlig jeg havde gjort... Jeg prøver lige at give point igen :)
Avatar billede repsak Nybegynder
24. juli 2003 - 15:03 #15
hehe :-)
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