Aufruf einer Funktionen aus einer anderen Seite

Beantwortet Aufruf einer Funktionen aus einer anderen Seite

  • Montag, 4. Februar 2013 16:46
     
     

    Hallo zusammen,
    ich habe eine WebAnwendung mit 2 Seiten "Default.aspx" und "Default2.aspx".
    Wie rufe ich in Default2.aspx.cs eine Funktion aus Default.aspx.cs auf?

    Mein Versuch mit:
    int wert=((Default)Page).GetWert(input);
    lässt sich zwar compilieren, aber zur Laufzeit erhalte ich folgende Fehlermeldung:
    "Unable to cast object of type 'ASP.default2_aspx' to type 'Default'"

    Fragen:
    Was muss ich ändern?
    Wo stelle ich Funktionen ab, die in beiden Seiten verwendet werden sollen?

    Grüße
    Wolfgang

Alle Antworten

  • Montag, 4. Februar 2013 17:23
     
     Beantwortet

    Hi,

    Deiner Beschreibung entnehme ich, dass die Funktion nicht statisch ist, d.h. Du brauchst eine Instanz von Default um eine Funktion dort aufzurufen. Dies ist so erst einmal nicht möglich. ASP.Net Seiten instantiiert man nicht selbst. (Wir wollen ja sauber entwickeln!)

    Was soll den die Funktion machen?

    Allgemeiner Ansatz:

    Du hast zwei Klassen: K1 und K2. Beide erben von B. Nun brauchst du eine Funktion in beiden KLassen K1 und K2. Du könntest die Funktion natürlich in beiden KLassen schreiben was aber doppelt gemoppelt ist. Die Objektorientierte Lösung wäre nun, von B eine Klasse Z abzuleiten in der Du die Funktion implementierst und dann K1 und K2 von Z ableitest. (Namen sind einfach Abkürzungen für KLasse1 KLasse2 Basisklasse und Zwischenklasse)

    Und die Fehlermeldung ist dann auch ganz klar. Du hast in Default2 die Page. Die ist vom Typ Default2. Du schreibst jetzt einfach: Nimm die Referenz in Page einfach mal als Default - und das macht der COmpiler dann. Und in Default ist der Aufruf der Funktion möglich. Aber zur Laufzeit stellt er dann fast: Das ist ja gar kein Objet vom Typ Default und bringt die Exception.

    Zur Verdeutlichung: Ich gebe Dir eine Referenz: Auf dem Parkplat 17 steht mein Ferrari - Nimm den und fahr damit nach XYZ. Die Anweisung ist erst einmal ok. Aber nun gehst DU hin (na gut - jetzt sind wir zur Laufzeit - also du läufst da bitte hin) und dann stellst Du fest: Auf dem Parkplatz 17 steht kein Ferrari sondern nur ein altes Sofa. Damit kann man nicht fahren = Exception.

    Vielleicht kannst Du uns aber auch einfach sagen, was Du da genau machen möchstest. Dann können wir Dir mehr helfen.

    Viele Grüße,

    Konrad

    • Als Antwort vorgeschlagen Horizon_Net Montag, 4. Februar 2013 17:35
    • Als Antwort markiert wolfgangh Dienstag, 5. Februar 2013 09:44
    •