DevTrain

Autor: Hannes Preishuber

Menü mit UserControls in ASP.NET

Jedes Programm moderner Bauart verwendet ein Menü zur Benutzerführung. Auch in Webanwendungen sind Menüs üblich. Wenn Sie bisher mit ASP gearbeitet haben, werden Sie entweder einen Frame oder ein Include File verwendet haben um Ihr Menü zu einzubinden.
In ASP .NET gibt es UserControls. Diese werden wie ASPX Seiten erstellt und haben die Endung ASCX. Übliche HTML Elemente wie Body oder Head fehlen natürlich. Auf diesen UserControls können nun HTML Controls jeder Art und Güte platziert werden.
Das UserControl kann dann auf Webseiten eingebaut werden. Man kann so eine Gruppe von Server Controls, die häufig benutzt werden zusammenfassen.

Dies machen machen wir uns zu Nutze um ein Menü zu bauen. Für die Verzweigung auf andere Seiten ist der Hyperlink ideal. Um das ganze zu gruppieren und farblich zu hinterlegen wird in diesem Beispiel ein Panel verwendet.

Sie können auch Server Code in das Menü einbauen. Dazu verwenden Sie wie schon  in ASP die <%%> Begrenzer.
In diesem Beispiel wird der angemeldete Benutzer über ein Cookie identifiziert und angezeigt. Als Platzhalter für die Anzeige dient ein Label.

<%
Dim myCook As HttpCookie = Request.Cookies("benutzer")
If not isnothing(myCook) Then
   user1.Text = myCook.value
End If
%>
<asp:Panel id="Panel1" runat="server" backcolor="SkyBlue" forecolor="Yellow" width="100%" height="19">
 <P>
  <asp:HyperLink id="menutop1" runat="server" NavigateUrl="index.aspx">
   Start</asp:HyperLink>&nbsp;
  <asp:HyperLink id="menutop2" runat="server" NavigateUrl="CallFlow.aspx">
   Support suchen</asp:HyperLink>&nbsp;
  <asp:HyperLink id="menutop3" runat="server" NavigateUrl="Customer.aspx">
   Kunden</asp:HyperLink>&nbsp;
  <asp:HyperLink id="menutop4" runat="server" NavigateUrl="TeamEdit.aspx">
   Team</asp:HyperLink>&nbsp;
  <asp:HyperLink id="menutop5" runat="server" NavigateUrl="Statistik.aspx">
   Statistik</asp:HyperLink>&nbsp;
  <asp:HyperLink id="menutop6" runat="server" NavigateUrl="login.aspx">
   Login:</asp:HyperLink>
  <asp:label id="user1" runat="Server">
   no User</asp:label>
 </P>
</asp:Panel>

Um ein dynamisches Menü mit z.B. DropDown Fenstern zu erstellen, können Sie Java Script verwenden. Dieses binden Sie wie HTML ein. Ansonsten ist JavaScript kein Bestandteil von .NET.

Nachdem das Usercontrol gespeichert ist, können Sie mit Visual Studio .NET durch einfaches Drag & Drop dieses in die Webseite ziehen. Das Ergebnis ist eine Deklaration im Page Header. Hier wird ein Namespace(Prefix) vergeben und der Name des Controls.
<%@ Register TagPrefix="Main" TagName="menu" Src="menu.ascx" %>

Dieses Control müssen Sie nun noch an gegebener Stelle in der Website anzeigen. Dazu verwenden Sie die ASP .NET übliche Syntax für WebForm Server Controls mit dem abweichen Namespace "Main".

<Main:menu runat="server" ID=Menu1/></Main:menu>

Sie können Sich ein Menge arbeit sparen, wenn Sie ein Template für die ASPX Seite anlegen bzw ändern. Beim erstellen einer neuen ASPX Seite ist das Control dann in jeder Seite bereits vorhanden.

User Controls können übrigens auch mit aktiven Elementen z.B. Buttons versehen werden. Dies wird aber in einem späteren Artikel genauer erläutert.
Auch lassen sich Controls bauen, die das Reendering (HTML Ausgabe) komplett selbst erledigen. Das heißt Sie bauen keine HTML Controls ein, sondern lassen direkt aus Ihrem Usercontrol HTML Tags ausgeben. Auch das wird einem späteren Artikel genauer betrachtet.

Dieses Beispiel bezieht sich auf die Beta 2 des .NET Frameworks.

 


Erfasst am: 07.01.2002 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=681
© Copyright 2003 ppedv AG - http://www.ppedv.de