Zum Verwalten von multilanguage Web Forms-Lösungen in Visual Studio .NET oder Visual Studio 2005

Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.

315903
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Zusammenfassung
Dieser Artikel beschreibt die mithilfe von XML-Dateninsel und das .NET XML -Webserversteuerelement ein kleines, multilanguage-Webanwendungsprojekt erstellen, die XML-Daten anzeigt. Die Hauptthread der Anwendung wird in Visual Basic .NET oder Visual Basic 2005 erstellt. Die Anwendung verwendet eine Klassenbibliothek in Visual C#-Komponente, um mehrsprachige Verweise und Implementierungsvererbung veranschaulichen.

back to the top

Voraussetzungen

Die folgende Liste führt die empfohlene Hardware, Software, Netzwerkinfrastruktur und Servicepacks, die Sie benötigen:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional oder Microsoft Windows XP Server mit Microsoft .NET Framework und Microsoft Visual Studio .NET installiert
In diesem Artikel wird vorausgesetzt, dass Sie über Erfahrungen auf den folgenden Gebieten verfügen:
  • Implementierungsvererbung
  • XML und Extensible Stylesheet Language Transformation (XSLT)
  • Microsoft .NET-Webserver-Steuerelemente
back to the top

Erstellen einer MultiLanguage ASP.NET-Webanwendung

In den folgenden Schritten erstellen Sie eine kleine ASP.NET-Webanwendungsprojekt, die ein Kunde Mittagessen Menüelemente auswählen kann basierend auf Kalorie Count. Zu diesem Zweck verwendet das Beispiel das XML- Webserver-Steuerelement eine einfache XML-Dokument, im Menü Daten und eine XSL-Stylesheet zum Transformieren der XML-Daten enthält. Die XsltArgumentList -Klasse aus den System.Xml.xsl -Namespace können Sie Parameter in der Transformation verwendet werden.
  1. Erstellen Sie ein Visual Basic Windows-Anwendungsprojekt wie folgt:
    1. Starten Sie Microsoft Visual Studio .NET oder Microsoft Visual Studio 2005, und klicken Sie auf Neues Projekt .
    2. Klicken Sie unter Projekttypen auf Visual Basic-Projekte . Klicken Sie unter Vorlagen auf ASP.NET-Webanwendung . Benennen Sie das Menü Projekt, und klicken Sie dann auf OK .

      Hinweis: Klicken Sie in Visual Studio 2005 unter Projekttypen auf Visual Basic .
  2. Stellen Sie sicher, dass das Fenster Projektmappen-Explorer sichtbar ist. Wenn das nicht der Fall ist, drücken Sie die Tastenkombination [STRG]+[ALT]+[L].
  3. Sie haben jetzt die Shell eines Projekts innerhalb einer Projektmappe mit dem Namen Menü Visual Basic .NET oder Visual Basic 2005-Webanwendung. Um dies zu eine mehrsprachige Lösung machen, müssen Sie eine Visual C#-Klassenbibliothek hinzufügen.

    In Solution Explorer-Fenster klicken Sie mit der rechten Maustaste auf Menü , zeigen Sie auf Hinzufügen , und klicken Sie auf Neues Projekt . Klicken Sie unter Projekttypen auf Visual C#-Projekte . Klicken Sie unter Vorlagen auf Klassenbibliothek . Halten Sie den Standardnamen ClassLibrary1. Klicken Sie auf OK , um diese Klassenbibliothek in der Projektmappe hinzuzufügen.

    Hinweis: Klicken Sie in Visual Studio 2005 auf Visual c# unter Projekttypen .
  4. Class1.cs wird im Editor-Fenster angezeigt. Fügen Sie die folgenden Namespacedeklaration am Anfang dieses Fensters:
    using System.Xml.Xsl;					
  5. Fügen Sie unter Öffentliche Class1 , den folgenden Code:
    public XsltArgumentList CreateArgumentList(string ParamName, string NamespaceURI, string ParamValue){ XsltArgumentList tal = new XsltArgumentList(); tal.AddParam(ParamName, NamespaceURI, ParamValue); return tal;}					
  6. Sie haben nun eine Visual C#-Klasse, die XSLT-Parameterinformationen akzeptiert und eine Instanz der XsltArgumentList -Klasse zurückgibt. Sie können jetzt Visual Basic-Anwendung erstellen, die diese Komponente genutzt wird.

    WebForm1.aspx sollte bereits in der Entwurfsansicht geöffnet sein. Falls nicht, doppelklicken Sie auf "WebForm1.aspx" im Fenster Projektmappen-Explorer. Klicken Sie auf die Registerkarte Entwurf unter dem Editorfenster, um zur Entwurfsansicht zu wechseln.
  7. Drücken Sie F4, um die Eigenschaftenseite zu öffnen. Ändern Sie die PageLayout -Eigenschaft, um FlowLayout .
  8. Geben Sie auf das Webformular Maximale Kalorien: .
  9. Fügen Sie dem Formular folgendermaßen ein TextBox -Steuerelement, ein Button -Steuerelement und ein XML- Steuerelement ein:
    1. Drücken Sie die Tastenkombination STRG + ALT + X um die Toolbox zu öffnen.
    2. Klicken Sie in der Toolbox auf Web Forms .
    3. Ziehen Sie ein TextBox -Steuerelement und ein Button -Steuerelement aus der Toolbox, und legen diese Steuerelemente auf das Web Form.
    4. Drücken Sie F4, um die Eigenschaftenseite für das Button -Steuerelement zugreifen.
    5. Ändern Sie die Text -Eigenschaft an Filtern .
    6. Positionieren Sie den Cursor nach der Schaltfläche, und drücken Sie dann die EINGABETASTE, um den Cursor für das XML -Steuerelement zu positionieren.
    7. Ziehen Sie ein XML -Webserversteuerelement aus der Toolbox, und legen Sie dieses Steuerelement auf dem Webformular.
    8. Drücken Sie F4, um die Eigenschaftenseite des XML -Steuerelements zugreifen.
    9. Ändern Sie die DocumentSource -Eigenschaft in Menu.xml , und ändern Sie dann die TransformSource -Eigenschaft in Menu.xslt .
  10. Doppelklicken Sie auf Filter-Menü , um erstellen Sie einen Click -Ereignishandler in der CodeBehind-Klasse des Web Form. Bevor Sie Code zum Ereignishandler hinzufügen, müssen Sie einen Verweis auf die Visual C#-Klassenbibliothek wie folgt hinzufügen:
    1. Klicken Sie im Projektmappen-Explorer unter ClassLibrary1 klicken Sie mit der rechten Maustaste auf Verweise und klicken Sie dann auf Verweis hinzufügen .
    2. Doppelklicken Sie auf der Registerkarte Projekte auf ClassLibrary1 . Beachten Sie, dass ClassLibrary1 im Listenfeld Ausgewählte Komponenten angezeigt wird.
    3. Klicken Sie auf OK . Beachten Sie, dass ClassLibrary1 unter Verweise in der Webanwendung angezeigt wird.
  11. Fügen Sie den folgenden Code hinzu den Click -Ereignishandler:
    Dim myArgList As New ClassLibrary1.Class1()Xml1.TransformArgumentList = myArgList.CreateArgumentList("calories", "", TextBox1.Text)Xml1.Visible = True						
    die Argumentliste, die Visual C#-Komponente gibt können Sie den Wert des TextBox -Steuerelements an das Stylesheet als Parameter übergeben. Dieses Stylesheet verwendet XSLT-Befehle, um herausfiltern aller Mittagessen Menüelemente, die die Kalorie überschreiten zählen die Debitor-Typen. Die folgende Codezeile aus dem Stylesheet zeigt, wie der Parameter erhalten und verwendet wird:
    <xsl:for-each select="lunch-menu/food[calories <= $calories]">					
  12. Verwenden Sie den Code aus Abschnitten Menu.xslt und Menu.xml, um die Menu.xml und Menu.xslt-Dateien zu erstellen. Klicken Sie im Projektmappen-Explorer klicken Sie mit der rechten Maustaste auf das Menü Projekt und fügen Sie die XML- und XSLT-Dateien hinzu.
back to the top

Vollständige Codeauflistung

Menu.Xml

<?xml version='1.0'?><lunch-menu>  <food>    <name>Cheese Pizza</name>    <price>$6.95</price>    <description>Individual deep-dish pizza with lots of mozzarella cheese</description>    <calories>800</calories>  </food>  <food>    <name>Pepperoni Pizza</name>    <price>$7.95</price>    <description>Individual deep-dish cheese pizza with thick-cut pepperoni slices</description>    <calories>950</calories>  </food>  <food>    <name>The "Everything" Pizza</name>    <price>$9.95</price>    <description>Individual deep-dish pizza with all our toppings. House specialty!</description>    <calories>800</calories>  </food>  <food>    <name>Hungarian Ghoulash</name>    <price>$4.50</price>    <description>Large serving in a sourdough bread bowl. A_local delight!</description>    <calories>600</calories>  </food>  <food>    <name>Maisey's Pork Sandwich</name>    <price>$6.95</price>    <description>A fresh pork fillet, deep-fried to perfection. Served with fries.</description>    <calories>950</calories>  </food></lunch-menu>				
back to the top

Menu.XSLT

<?xml version="1.0"?><xsl:stylesheet version="1.0"    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">    <xsl:param name="calories">1500</xsl:param>  <xsl:template match="/">    <HTML>      <BODY STYLE="font-family:Arial, helvetica, sans-serif; font-size:12pt;            background-color:#EEEEEE">        <xsl:for-each select="lunch-menu/food[calories <= $calories]">          <DIV STYLE="background-color:blue; color:white; padding:4px">            <SPAN STYLE="font-weight:bold; color:white"><xsl:value-of select="name"/></SPAN>            - <xsl:value-of select="price"/>          </DIV>          <DIV STYLE="margin-left:20px; margin-bottom:1em; font-size:10pt">            <xsl:value-of select="description"/>            <SPAN STYLE="font-style:italic">              (<xsl:value-of select="calories"/> calories per serving)            </SPAN>          </DIV>        </xsl:for-each>      </BODY>    </HTML>  </xsl:template></xsl:stylesheet>				
back to the top

"WebForm1.aspx"

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="menu.WebForm1"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>  <HEAD>    <title>WebForm1</title>    <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">    <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">    <meta name=vs_defaultClientScript content="JavaScript">    <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">  </HEAD>  <body >    <form id="Form1" method="post" runat="server"><P>Maximum Calories: <asp:TextBox id="TextBox1" runat="server"></asp:TextBox><asp:Button id="Button1" runat="server" Text="Filter menu"></asp:Button></P><P><asp:Xml id="Xml1" runat="server" DocumentSource="menu.xml" TransformSource="menu.xslt"></asp:Xml></P>    </form>  </body></HTML>				
back to the top

Beispiel für Class1.cs nicht Vererbung

using System;using System.Xml.Xsl;namespace ClassLibrary1{    /// <summary>    /// Summary description for Class1.    /// </summary>    public class Class1    {        public XsltArgumentList CreateArgumentList(        string ParamName, string NamespaceURI, string ParamValue)        {            XsltArgumentList tal = new XsltArgumentList();            tal.AddParam(ParamName, NamespaceURI, ParamValue);            return tal;        }    }}				
back to the top

WebForm1.vb erben System.Web.UI.Page

Imports System.Xml.XslPublic Class WebForm1    Inherits System.Web.UI.Page    Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox    Protected WithEvents Button1 As System.Web.UI.WebControls.Button    Protected WithEvents Xml1 As System.Web.UI.WebControls.Xml#Region " Web Form Designer Generated Code "    'The Web Form Designer requires this call.    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()    End Sub    Private Sub Page_Init(ByVal sender As System.Object, _    ByVal e As System.EventArgs) Handles MyBase.Init        'CODEGEN: The Web Form Designer requires this method call.        'Do not use the Code editor to modify it.        InitializeComponent()    End Sub#End Region    Private Sub Page_Load(ByVal sender As System.Object, _    ByVal e As System.EventArgs) Handles MyBase.Load        'Insert user code to initialize the page here.    End Sub    Private Sub Button1_Click(ByVal sender As System.Object, _    ByVal e As System.EventArgs) Handles Button1.Click        Dim tal As New XsltArgumentList()        tal.AddParam("calories", "", TextBox1.Text)        Xml1.TransformArgumentList = tal        Xml1.Visible = True    End SubEnd Class				
back to the top

Beispiel für Class1.cs Vererbung

using System;using System.Xml.Xsl;namespace ClassLibrary1{    /// <summary>    /// Summary description for Class1.    /// </summary>    public class Class1 : System.Web.UI.Page    {        public XsltArgumentList CreateArgumentList(        string ParamName, string NamespaceURI, string ParamValue)        {            XsltArgumentList tal = new XsltArgumentList();            tal.AddParam(ParamName, NamespaceURI, ParamValue);            return tal;        }    }}				
back to the top

WebForm1.vb erben ClassLibrary1

Imports System.Xml.XslPublic Class WebForm1    Inherits ClassLibrary1.Class1    Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox    Protected WithEvents Button1 As System.Web.UI.WebControls.Button    Protected WithEvents Xml1 As System.Web.UI.WebControls.Xml#Region " Web Form Designer Generated Code "    'The Web Form Designer requires this call.    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()    End Sub    Private Sub Page_Init(ByVal sender As System.Object, _    ByVal e As System.EventArgs) Handles MyBase.Init        'CODEGEN: The Web Form Designer requires this method call.        'Do not use the Code editor to modify it.        InitializeComponent()    End Sub#End Region    Private Sub Page_Load(ByVal sender As System.Object, _    ByVal e As System.EventArgs) Handles MyBase.Load        'Insert user code to initialize the page here.    End Sub    Private Sub Button1_Click(ByVal sender As System.Object, _    ByVal e As System.EventArgs) Handles Button1.Click    Xml1.TransformArgumentList = CreateArgumentList("calories", "", TextBox1.Text)        Xml1.Visible = True    End SubEnd Class				
back to the top

Funktionsprüfung

  1. Drücken Sie F5, um die Anwendung im Debugmodus auszuführen.
  2. Das gesamte Menü wird standardmäßig angezeigt. Notieren Sie sich die Kalorie Zählungen für jedes Element.
  3. Geben Sie in das Textfeld eine Zahl Kalorien und klicken Sie dann auf Filter Menü . Beachten Sie, dass nur Menüelemente, die kleiner oder gleich diesem Betrag Kalorie angezeigt werden.
  4. Drücken Sie die UMSCHALT + F5 Tastenkombination Debugvorgang beenden und zur Visual Studio zurückzukehren.
back to the top

Schritte zum Erläutern von MultiLanguage Vererbung

Um mehrsprachige Vererbung zu veranschaulichen, müssen Sie das Web ändern-Anwendungsprojekt. Anstatt eine Instanz der Klassenbibliothek zu erstellen-Komponente, die Anwendung von Visual Basic .NET Web Form erbt Code-Behind-Klasse.

Der Code-Behind-Klasse erbt derzeit die System.Web.UI.Page -Klasse. Da Microsoft.NET Mehrfachvererbung nicht unterstützt, müssen Sie Seite Klassenvererbung in Visual C#-Klasse verschieben.
  1. Fügen Sie in der Klassenbibliothek einen Verweis auf den System.Web -Namespace hinzu, vor dem Ändern der Visual C#-Code.
  2. Klicken Sie im Projektmappen-Explorer unter ClassLibrary1 klicken Sie mit der rechten Maustaste auf Verweise und klicken Sie dann auf Verweis hinzufügen .
  3. Doppelklicken Sie auf der Registerkarte .NET auf System.Web.dll . Beachten Sie, dass System.Web.dll im Listenfeld Ausgewählte Komponenten angezeigt wird.
  4. Klicken Sie auf OK . Beachten Sie, dass unter Verweise in der Klassenbibliothek System.Web angezeigt wird.
  5. Die Class1 -Deklaration mit die Seitenklasse erben:
    public class Class1 : System.Web.UI.Page					
  6. Visual Basic .NET oder Visual Basic 2005 CodeBehind-Klasse kann jetzt Class1 erben. Da Class1 die Page -Klasse erbt, erbt die Code-Behind-Klasse auch die Page -Klasse durch die Vererbung von Class1 .

    Klicken Sie im Editor auf WebForm1.aspx.vb . Ersetzen Sie unter der Klassendeklaration System.Web.UI.Page mit ClassLibrary1.Class . Der aktualisierte Code sollte wie folgt angezeigt:
    Inherits ClassLibrary1.Class1					
  7. Kommentieren Sie die erste Zeile im Click -Ereignishandler wie folgt:
    'Dim myArgList As New ClassLibrary1.Class1()					
  8. Ändern Sie die zweite Zeile im Click -Ereignishandler durch Aufrufen von CreateArgumentList ohne Objektverweis:
    Xml1.TransformArgumentList = CreateArgumentList("calories", "", TextBox1.Text)					
  9. Wiederholen Sie die Schritte im Abschnitt „ Verify That It Works.
back to the top

Problembehandlung

  • Wenn Sie mit zwei Sprachen arbeiten, ist es leicht verwechselt Syntax. Visual C#-Syntax lässt nicht zu einen breiten Rand Fehler. Darüber hinaus sind Visual c#-Fehlermeldungen nicht immer als Eingabeaufforderung oder so intuitiv als Visual Basic .NET Fehlermeldungen. Um diese Probleme zu beheben, finden Sie in den Abschnitt "Language Equivalents" von Microsoft .NET Framework Software Development Kit (SDK):
  • Wenn Sie Implementierungsvererbung verwenden möchten, untersuchen Sie Prinzipien objektorientierten Entwurf und berücksichtigen Sie Architektur der Anwendung im Voraus zu. Ein häufiger Fehler besteht darin, Code in eine zentrale Anwendung einfügen, die Sie in eine Klassenbibliothek erben müssen. In diesem Szenario können Sie die Hauptanwendung in eine Klassenbibliothek nicht wegen Ringabhängigkeiten erben. Z. B. versuchen Sie, einen Verweis auf das Menü Projekt im Projekt ClassLibrary1 hinzuzufügen. Folgende Fehlermeldung wird angezeigt:
    Ein Verweis auf "Menu" konnte nicht hinzugefügt werden. Das Hinzufügen dieses Projekts als Verweis würde eine Ringabhängigkeit verursachen.
back to the top

Informationsquellen

Weitere Informationen finden Sie auf der folgenden Microsoft-Websites: back to the top
mehrsprachige Codebehind-Dateninsel

Warnung: Dieser Artikel wurde automatisch übersetzt

Eigenschaften

Artikelnummer: 315903 – Letzte Überarbeitung: 02/24/2014 06:09:40 – Revision: 5.8

  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual Basic 2005
  • kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315903 KbMtde
Feedback