DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Hannes Preishuber Artikel Drucken
        
Events auf zweiter Page behandeln

Mit ASP war es lange Zeit üblich für die Ereignisbehandlung auf eine zweite Seite zuzugreifen. Dies z.B. um eine unverselle Formularbehandlung für alle Eingabeseiten zu bauen. Mit ASP .NET ist dies jetzt auf den ersten Blick nicht mehr möglich, da entweder in der gleichen Seite oder in der gleichnamigen Codebehind Seite gearbeitet werden muss. Es geht aber doch!

Zunächst legen wir eine normale ASP Seite mit dem Namen "First" an. Auf dieser platzieren wir einen Tetxbox (txtName) und einen Button.

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="first.aspx.vb" Inherits="tonershop.first"%>

<HTML>
 <HEAD>
  <title>first</title>
 </HEAD>
 <body >
  <form id="Form1" method="post" runat="server">
   <asp:TextBox id="txtName" runat="server"></asp:TextBox>
   <asp:Button id="cmdButton" runat="server" Text="Button"></asp:Button>
  </form>
 </body>
</HTML>

In der gleichnamigen Codebehind Seite wird dann der Eventhandler eingebaut, die per Server.Transfer die bearbeitung an eine zweite Seite übergibt. Damit beliebt der Title im Browserfenster für den Benutzer der gleiche (first.aspx)
Um das Textbox Control aber überhaupt auf der zweiten Seite verfügbar zu machen, gibt es zwei Möglichkeiten.
1. Statt protected die textbox mit Public deklaraieren
2. ein Proberty einbauen

Die zweite Methode implementiert die Eigenschaft TextFeld, die wiederum nur lesend den Text der Textbox zurückliefert.

Public Class first
    Inherits System.Web.UI.Page
    Protected WithEvents cmdButton As System.Web.UI.WebControls.Button
    Protected WithEvents txtName As System.Web.UI.WebControls.TextBox

    Public ReadOnly Property TextFeld() As String
        Get
            Return txtName.Text
        End Get
    End Property
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub

  
    Private Sub cmdButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdButton.Click
        Server.Transfer("second.aspx")
    End Sub
End Class


Die zweite Seite (second.aspx) enthält auf der HTMl Seite nichts nenneswertes. Laut Doku sollte allerdings die Direktive Reference Page auf die Ursprungsseite gesetzt werden. Die Begründung ist, das damit die ursprungseite dynamisch mitkompiliert und gelinkt wird.

In meinen Test funktionierte es allerdings auch ohne.

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="second.aspx.vb" Inherits="tonershop.second"%>
<%@ Reference Page="first.aspx" %>

<html>
 <head>
  <title>second</title>
  
 </head>
 <body>
  <form id="Form1" method="post" runat="server">
  </form>
 </body>
</html>

Nun müssen wir nur noch die Eventbehandlung auf der zweiten Seite durchführen. Dazu wird eine tVariable fp mit der Klasse first (name der ersten Seite) deklariert. Anschliessend wird diese zugewiesen indem aus dem aktuellen Context der Handler in die First Klasse gecastet wird.

Dadurch erhalten Sie über das Objekt fp nun vollen Zugriff auf den Inhalt der Klasse first aus der ersten Seite und können z.B. per Response.Write den Inhalt ausgeben.

Public Class second
    Inherits System.Web.UI.Page
    Public fp As first

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
         If Not IsPostBack Then
            fp = CType(Context.Handler, first)
            Response.Write(fp.TextFeld)
        End If
    End Sub

End Class


Anhand dieses Beispieles erfährt man ein bischen mehr über die Möglichkeiten und arbeitsweise von ASP .NET . Eine wirkliche Anwendung erscheint aber wenig sinnvoll. Muster ohne Wert.

 

 


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 17.07.2002
  Gültig bis: 16.08.2002
2 Ratings
Bewertung: 80,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG