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

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 315903 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Alles erweitern | Alles schließen

Auf dieser Seite

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.

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

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.

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>
				

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>
				

"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>
				

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;
        }
    }
}
				

WebForm1.vb erben System.Web.UI.Page

Imports System.Xml.Xsl

Public 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 Sub
End Class
				

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;
        }
    }
}
				

WebForm1.vb erben ClassLibrary1

Imports System.Xml.Xsl

Public 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 Sub
End Class
				

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.

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.

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):
    Sprache-Entsprechungen
    http://msdn2.microsoft.com/en-us/library/czz35az4(vs.71).aspx
  • 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.

Informationsquellen

Weitere Informationen finden Sie auf der folgenden Microsoft-Websites:
Basic Instincts: Verwenden von Vererbung in .NET, Teil 1
http://msdn.microsoft.com/en-us/magazine/cc135806.aspx

Basic Instincts: Verwenden von Vererbung in .NET, Teil 2
http://msdn.microsoft.com/en-us/magazine/cc301744.aspx

XML Core
http://msdn.microsoft.com/en-us/xml/bb291077.aspx

XML-Webserversteuerelement
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gnconxmlwebservercontrol.asp

XML-Daten-Inseln
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/comsrv2k/htm/cs_tp_bizdesk_nqok.asp

Eigenschaften

Artikel-ID: 315903 - Geändert am: Montag, 24. Februar 2014 - Version: 5.8
Die Informationen in diesem Artikel beziehen sich auf:
  • 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
Keywords: 
kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315903 KbMtde
Maschinell übersetzter Artikel
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.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 315903
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com