Glengamoi · AspHeute (Artikel) · .NET Heute (RSS-Suche) · .NET Blogs · Glengamoi Suche (Installieren via Klick)

Glengamoi

Die Diskussionsforen der deutschen .NET Community
Willkommen bei Glengamoi. Anmeldung | Registrieren | Hilfe
in Suchen

[gelöst] Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

Letzter Beitrag 05-20-2008 0:02 von Chris Cluss. 18 Antworten.
Seite 1 von 2 (19 Treffer) 1 2 > Weiter
Beiträge sortieren: Zurück Weiter
  • 05-09-2008 13:56

    [gelöst] Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

    Es hätte so schön sein können! Mein erstes Kontaktformular als  .aspx-Datei funktioniert super. Nun fiel mir ein, dass ich gerne noch ein zweites dieser Art hätte. Naheliegende Idee, den gemeinsamen Skriptcode der beiden Formulare in eine gemeinsam genutzte Datei zu  verschieben.

    Ich willalso  einfach nur zwei "Public Function" und zwei globale Variablen auslagern und dann aus dem <script>-Block der jeweiligen .aspx-Seite aufrufen.

    Ich benutze kein VisualStudio; fast alle Tutorials zum Thema  erklären aber nur, wie man das "visuell" hinkriegt.

    Mag das jemand kurz erklären? Ich ärger mich mit dem kleinen Problem schon seit heute morgen herum :-(

     Grüße und vielen Dank,

    FZ

    • IP-Adresse ist Registriert
  • 05-09-2008 14:05 Antwort zu

    AW: Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

    Hi,

    Stichwort : Vererbung!
    Mach Dir doch ne kleine BasePage Klasse die von System.Web.UI.Page erbt.
    Von dieser BasePage leitest Du dann deine beiden Form-Aspx Pages ab.

    In der BasePage kannst Du ja dann Programm-Logik unterbringen, die Du dann in beiden Form-Aspx Pages brauchen kannst.


    Cheers,
    Oliver

    Cheers,
    Oliver
    • IP-Adresse ist Registriert
  • 05-09-2008 14:16 Antwort zu

    AW: Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

    Hi Oliver,

    warte mal, das ist schon zu weit gedacht :-)

    Wie funktionieren die Deklarationen am Seitenkopf?

    Ich krieg es bisher einfach noch nicht hin, einen Namespace oder ein Modul oder eine Klasse  aus einem eigenen File zu importieren.

    cheerio,
    Frank 

     

     

    • IP-Adresse ist Registriert
  • 05-09-2008 14:29 Antwort zu

    AW: Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

    Hi Frank,

    Schau Dir mal diesen Link an...
    Dies sollte Dir aufzeigen wie das Pattern mit der BasePage ausehen könnte/sollte....

    http://www.developer.com/net/asp/article.php/3605646

    Weiter vielleicht noch ein kleiner nützlicher Link zum Thema 'Vererbung' in der objektorientierten Programmierwelt.
    http://msdn.microsoft.com/de-de/library/ms173149(VS.80).aspx

    Cheers,
    Oliver

    Cheers,
    Oliver
    • IP-Adresse ist Registriert
  • 05-09-2008 15:14 Antwort zu

    AW: Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

    OK, probier ich. Also.

    - das File mit den gemeinsamen Funktionen liegt im Subfolder App_Code und heisst BasePage.vb

    - drin steht (kurz gefasst):

      Public Class BasePage
        Inherits System.Web.UI.Page

          Public Sub machwas()
            Response.Write("hallo, hier bin ich<br>")
          End Sub

      End Class

    - In der .aspx-Seite ("Kontakt.aspx") steht jetzt:

       Partial Public Class MyPage
          Inherits BasePage
       End Class

       Sub btnhandler ( ByVal o As Object, ByVal e As EventArgs )
          MyPage.machwas()
       End Sub

     

    - Als Fehlermeldung kommt: "Inherits BasePage: Der Typ BasePage ist nicht definiert."


    Was muss ich noch deklarieren, damit der Compiler meine BasePage-Klasse einliest?

    Gruesse,
    Frank 

    • IP-Adresse ist Registriert
  • 05-10-2008 11:16 Antwort zu

    AW: Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

    Hi,

    Hast Du den richtigen Namespace zu Deiner BasePage Klasse angegeben?

    Die Methode machwas() in der BasePage könntest Du 'protected' machen und nicht 'public'.

    Gruss,
    Oliver

    Cheers,
    Oliver
    • IP-Adresse ist Registriert
  • 05-10-2008 11:19 Antwort zu

    AW: Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

    Noch ne kleine Frage,

    Arbeitest Du mit Code-Behind oder mit Code innerhalb der ASPX Page?
    Also ich bevorzuge auf jedenfall Code-Behind.

    Gruss,
    Oliver

    Cheers,
    Oliver
    • IP-Adresse ist Registriert
  • 05-12-2008 20:21 Antwort zu

    AW: Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

    Hi Oliver,

    Import Namespace=BasePage:  jetzt ja -- aber es ändert nix: "Der Typ BasePage ist nicht definiert". Sag nochmal:
    woher weiss der Compiler, dass er die Klassendefinition in App_Code/BasePage.vb findet? Das muss ich ihm doch  irgendwie mitteilen -- oder?

     Danke für den Hinweis zu "protected" vs. "public"! Ich denke da immer noch sehr in den Bahnen anderer Sprachen  (hmm, Modula?).


    Grüße,
    Frank  

    PS. CodeBehind vs. CodeDazwischen: Letzteres, zum Warmwerden mit asp.net

    • IP-Adresse ist Registriert
  • 05-13-2008 8:28 Antwort zu

    AW: Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

    Hi again,

    1. Mache um all Deine Klasse einen Namespace.
    2. Auf Deiner ASPX Page die von der BasePage erben will, muss Du natürlich einen Verweis auf den BasePage-Namespace machen.

    Du kannst den Verweis entweder im CodeBehind machen mit --> Imports MyNamespace1.MyNamespace2
    oder
    zuoberst als Directive in Deiner Page <%@ Import namespace="MyNamespace1.MyNamespace2" %>

    Danach müsste es klappen.

    Gruss,
    Oliver

    Cheers,
    Oliver
    • IP-Adresse ist Registriert
  • 05-13-2008 11:21 Antwort zu

    AW: Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

    Hi Oliver,

    den eigenen Namespace habe ich jetzt um meine Klasse gewickelt. Also ist der Stand:

     

    a.) neue Klasse / Klassendefinition

    File: App_Code\MyBasePage.vb

    Inhalt:
    Namespace MyBasePage 

       Public Class BasePage
         Inherits System.Web.UI.Page

           Protected Sub machwas()
             Response.Write("hallo, hier bin ich<br>")
           End Sub

       End Class

    End Namespace 

    b.) aspx-Seite

    File: Kontakt.aspx

    Inhalt:
    <%@ Page Language="VB" Debug="true" %>
    <%@ Import Namespace="MyBasePage" %>

     <!DOCTYPE ... > 

    <script runat="server">
       Partial Public Class MyPage
          Inherits BasePage
       End Class

       Sub btnhandler ( ByVal o As Object, ByVal e As EventArgs )
          MyPage.machwas()
       End Sub
    </script>

     

    Fehlermeldung:

    warning: Der in Imports MyBasePage angegebene Namespace o. Typ enthält k. öff. Member oder kann nicht gefunden werden
    error: Der Typ BasePage ist nicht definiert.

    Ich hab das Gefühl, wir sind jetzt ganz nah am Kern meines Problems! :-)

    Gruesse,
    Frank

    • IP-Adresse ist Registriert
  • 05-13-2008 12:47 Antwort zu

    AW: Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

    Wenn Du nicht mit Codebehind arbeitest, musst Du im Header folgenden Verweis auf Basepage setzen:

    <%@ Page Language="VB" Inherits="BasePage" %>

    Aber ich rate Dir gar nicht erst mit Inline-Code anzufangen ... der normale Weg ist im Codebehind und wenn Du schon mit anderen Sprachen Erfahrungen hast, sollte das auch kein Problem sein.

     

    • IP-Adresse ist Registriert
  • 05-13-2008 12:56 Antwort zu

    AW: Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

    und ehrlich gesagt, verstehe ichDeine Weigerung bzgl. Visual Studio gar nicht.

    Die Entwicklungsumgebung (auch dei kostenlose Express-Version) ist extrem gelungen und die Intellisense-Funktionen erleichtern die Arbeit und auch den Lernprozess extrem.
    Was Du dann visuell machst bleibt Dir überlassen aber der Editor schlägt jeden Editor den Du stattdessen benutzen könntest. Die Hilfefunktion ist kontextsensitiv und liefert Dir wenn Du z.B. auf einer Variable mit dem Cursor bist und F1 klickst bekommst Du die Informationen zu dem Typ.
    Das debugging ermöglicht Dir Schritt für Schritt durch den Code zu gehen und die aktuellen Werte der Variablen einzusehen und auch zu verändern.... schau mal hier

    • IP-Adresse ist Registriert
  • 05-13-2008 13:27 Antwort zu

    AW: Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

    Mein Tip...

    1. Wechsle auf Codebehind
    2. Benutze Visual Studio (von mir auch Express Version ;-))
    3. C# rules ! :-)

    Zu Deinem Code:
    Ich könnte mir vorstellen, dass Dein Fehler in folgender Zeile ist:

       Sub btnhandler ( ByVal o As Object, ByVal e As EventArgs )
          me.machwas()
       End Sub

    Cheers,
    Oliver

    Cheers,
    Oliver
    • IP-Adresse ist Registriert
  • 05-13-2008 13:32 Antwort zu

    AW: Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

    Ach ja...
    Den fehlenden Inherit in der Page-Direktive habe ich gar nicht gesehen, dass der fehlt.
    Chris hat es ja anscheinend entdeckt...

    Solche Arbeit nimmt Dir auch alles das VS ab...

    Wie Chris schon sagte empfehle ich Dir VS zu benutzen.
    Vor allem, wenn man noch in den Anfängen ist unterstützt einen VS seeeehr (Intellisence...usw..)

    Nebenbei ist es schwierig finde ich für Inline-Code zu helfen, weil man immer einen Mix aus Html und Code posten muss...
    Also CodeBehind verwenden ! ;-)

    Cheers,
    Oliver

    Cheers,
    Oliver
    • IP-Adresse ist Registriert
  • 05-13-2008 13:52 Antwort zu

    AW: Niedliche Anfängerfrage: Modularisierung von VB.NET2.0 Programm?

    Hallo, ihr netten Helfer,

    Chris, wg. VisualStudio: Ich benutze es schon, wegen Kontexthilfe und Syntaxhighlighting. Ich will aber eigentlich meine "Projektverwaltung" erstmal zu Fuß machen, damit ich verstehe was da hinter den Kulissen so passiert. Und jetzt will ich's ja irgendwie auch einfach wissen! So ein schlichtes "Helloworld",  das einfach nur Symbole aus einem zweiten File referenziert -- das muss ich doch zu Fuß hinkriegen! Die "Inherits"-Anweisung, die du erwähnt hast, braucht es also zusätzlich zu der schon vorhandenen in der Objektdeklaration ("MyPage")? Sie produziert aber sofort einen Parserfehler: "Der Typ BasePage konnte nicht geladen werden".

    Ich hab jetzt noch folgendes probiert, um meine BasePage-Klasse (das File mit dem Quellcode) einzubinden:

    (Als letzten VB-Header auf der aspx-Seite):

    <%@ Reference Page="App_Code\BasePage.vb" %>

    ....und hurra, immerhin, der Klassencode wird geparst.

    Dann allerdings kommt ein neuer (Parser-) Fehler:

    Die Datei "src" ist an dieser Stelle nicht gültig, weil sie keinen Typ verfügbar macht.

    Könnt ihr mir an der Stelle weiter helfen?

    Gruß an alle,

    Frank 

    • IP-Adresse ist Registriert
Seite 1 von 2 (19 Treffer) 1 2 > Weiter