Come gestire multilingue soluzioni di Web Form in Visual Studio .NET o Visual Studio 2005

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 315903
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Sommario
In questo articolo viene illustrato come utilizzare un'isola di dati XML e il controllo server Web XML .NET per creare un progetto applicazione Web multilingua, piccolo, che visualizza i dati XML (Extensible Markup Language). L'applicazione principale viene creato nella Visual Basic .NET o Visual Basic 2005. L'applicazione utilizza un componente di libreria di classi Visual C# per illustrare i riferimenti multilingue e l'ereditarietà dell'implementazione.

back to the top

Requisiti

Nell'elenco seguente sono indicati hardware, software, infrastruttura di rete e i service pack è necessario:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional o Microsoft Windows XP Server con Microsoft .NET Framework e Microsoft Visual Studio .NET sia installato
In questo articolo si presume la conoscenza dei seguenti argomenti:
  • Ereditarietà dell'implementazione
  • XML ed Extensible Stylesheet Language Transformation (XSLT)
  • Controlli server web di Microsoft .NET
back to the top

Creazione di un'applicazione Web ASP.NET multilingue

Di seguito, è possibile creare un piccolo progetto applicazione Web ASP.NET che consente a un cliente selezionare voci di menu pranzo basati sul conteggio dei Caloria. Per effettuare questa operazione, l'esempio utilizza il controllo server Web XML un semplice documento XML contiene i dati di menu e un foglio di stile XSL per trasformare i dati XML. La classe XsltArgumentList dallo spazio dei nomi System.Xml.xsl consente di utilizzare i parametri nella trasformazione.
  1. Creare un progetto applicazione Windows Visual Basic come segue:
    1. Avviare Microsoft Visual Studio .NET o Microsoft Visual Studio 2005 e quindi fare clic su Nuovo progetto .
    2. In Tipi progetto fare clic su Progetti di Visual Basic . In modelli fare clic su Applicazione Web ASP.NET . Rinominare il menu progetto e quindi fare clic su OK .

      Nota In Visual Studio 2005, fare clic su Visual Basic in Tipi progetto .
  2. Assicurarsi che sia visibile la finestra Esplora soluzioni. In caso contrario, premere CTRL+ALT+L.
  3. Ora è la shell di un progetto Visual Basic .NET o applicazione Web di Visual Basic 2005 all'interno di una soluzione denominato menu. Per rendere una soluzione multilingua, è necessario aggiungere una libreria di classi C# Visual.

    Nella soluzione finestra Explorer, fare clic con il pulsante destro del mouse sul menu , scegliere Aggiungi , quindi Nuovo progetto . In Tipi progetto fare clic su Progetti di Visual C# . Fare clic su Libreria di classi in modelli . Consente di mantenere il nome predefinito, ClassLibrary1. Fare clic su OK per aggiungere questa libreria di classi alla soluzione.

    Nota Fare clic in Visual Studio 2005 su Visual C# in Tipi progetto.
  4. Class1.cs viene visualizzata nella finestra Editor. Aggiungere la seguente dichiarazione dello spazio dei nomi nella parte superiore della finestra:
    using System.Xml.Xsl;					
  5. In pubblica Class1 , aggiungere il seguente codice:
    public XsltArgumentList CreateArgumentList(string ParamName, string NamespaceURI, string ParamValue){ XsltArgumentList tal = new XsltArgumentList(); tal.AddParam(ParamName, NamespaceURI, ParamValue); return tal;}					
  6. Ora è classe C# che accetta le informazioni sui parametri XSLT e che restituisce un'istanza della classe XsltArgumentList . È ora possibile generare l'applicazione di Visual Basic che utilizzerà questo componente.

    WebForm1.aspx dovrebbe già essere aperta in visualizzazione struttura. In caso contrario, fare doppio clic su WebForm1.aspx in Esplora soluzioni. Scegliere la scheda struttura sotto la finestra Editor per passare alla visualizzazione struttura.
  7. Premere il tasto F4 per accedere alla pagina proprietà. Cambiare la proprietà pageLayout su FlowLayout .
  8. In Web Form, digitare calorie massimo: .
  9. Aggiungere un controllo TextBox , un controllo Button e un controllo XML al modulo come indicato di seguito:
    1. Premere la combinazione di tasti CTRL + ALT + X per aprire la casella degli strumenti.
    2. Fare clic su Web Form nella casella di strumenti.
    3. Trascinare un controllo TextBox e un controllo Button dalla casella degli strumenti e rilasciarlo questi controlli sul Web Form.
    4. Premere F4 per accedere alla pagina proprietà per il controllo Button .
    5. Modificare la proprietà Text al Menu del filtro .
    6. Posizionare il cursore dopo il pulsante e quindi premere INVIO per posizionare il cursore per il controllo XML .
    7. Trascinare un controllo di server Web XML dalla casella degli strumenti e trascinare il controllo all'interno del Form Web.
    8. Premere F4 per accedere alla pagina proprietà del controllo XML .
    9. Modificare la proprietà DocumentSource Menu.xml e quindi modificare la proprietà OrigineTrasformazione per Menu.xslt .
  10. Fare doppio clic sul Menu del filtro per creare un gestore eventi Click nella classe code-behind del Web Form. Prima di aggiungere codice al gestore, è necessario aggiungere un riferimento alla libreria di classi C# Visual di nel modo seguente:
    1. Nella finestra Esplora, in ClassLibrary1 , fare clic con il pulsante destro del mouse su riferimenti e quindi fare clic su Aggiungi riferimento .
    2. Nella scheda progetti , fare doppio clic su ClassLibrary1 . Si noti che ClassLibrary1 viene visualizzata nella casella Componenti selezionati .
    3. Fare clic su OK . Si noti che ClassLibrary1 viene visualizzata nella casella riferimenti nell'applicazione Web.
  11. Aggiungere il codice seguente al gestore dell'evento Click :
    Dim myArgList As New ClassLibrary1.Class1()Xml1.TransformArgumentList = myArgList.CreateArgumentList("calories", "", TextBox1.Text)Xml1.Visible = True						
    l'elenco di argomenti che restituisce il componente di Visual C# consente di passare il valore del controllo TextBox come parametro al foglio di stile. Questo foglio di stile utilizza XSLT comandi per filtrare pranzo tutte le voci di menu che superano il Caloria conteggio che i tipi di clienti. Riga di codice dal foglio di stile riportato di seguito viene illustrato come il parametro è ricevuto e utilizzato:
    <xsl:for-each select="lunch-menu/food[calories <= $calories]">					
  12. Utilizzare il codice da sezioni Menu.xslt e il Menu.xml per creare i file Menu.xml e Menu.xslt. Nella finestra Esplora soluzioni, fare clic con il pulsante destro del mouse menu progetto e quindi aggiungere i file con estensione XML e XSLT.
back to the top

Elenco completo del codice

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

Esempio di ereditarietà Non Class1.cs

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 eredità 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

Esempio di ereditarietà di Class1.cs

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 eredità 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

Verifica del funzionamento

  1. Premere il tasto F5 per eseguire l'applicazione in modalità di debug.
  2. Il menu intero viene visualizzato per impostazione predefinita. Annotare i conteggi Caloria per ciascun elemento.
  3. Nella casella di testo, digitare un numero di calorie e quindi fare clic su Filtro Menu . Si noti che vengono visualizzati solo gli elementi di menu che si trovano minore o uguale a tale importo Caloria.
  4. Premere la combinazione di tasti MAIUSC+F5 per interrompere il debug e tornare a Visual Studio.
back to the top

Procedura per dimostrare l'ereditarietà multilingua

Per illustrare l'ereditarietà multilingua, è necessario modificare il Web progetto di applicazione. Invece di creare un'istanza della libreria di classi componente, l'applicazione eredita il Web Form di Visual Basic .NET classe code-behind.

La classe di codice sottostante eredita attualmente la classe System.Web.UI.Page . Perché Microsoft .NET non supporta l'ereditarietà multipla, è necessario spostare l'ereditarietà di classe di pagina alla classe C#.
  1. Aggiungere un riferimento lo spazio dei nomi System.Web nella libreria di classi, prima di modificare Visual C# codice.
  2. Nella finestra Esplora, in ClassLibrary1 , fare clic con il pulsante destro del mouse su riferimenti e quindi fare clic su Aggiungi riferimento .
  3. Nella scheda .NET , fare doppio clic su System.Web.dll . Si noti che System.Web.dll viene visualizzata nella casella Componenti selezionati .
  4. Fare clic su OK . Si noti che System.Web viene visualizzata nella casella riferimenti nella libreria di classi.
  5. Modificare la dichiarazione Class1 ereditare la classe Page :
    public class Class1 : System.Web.UI.Page					
  6. La classe code-behind di Visual Basic .NET o Visual Basic 2005 è pronto ereditare Class1 . Poiché Class1 eredita la classe Page , la classe code-behind eredita anche la classe di pagina tramite l'ereditarietà di Class1 .

    Nella finestra Editor, fare clic su WebForm1.aspx.vb . Sotto la dichiarazione di classe, è necessario sostituire System.Web.UI.Page con ClassLibrary1.Class . Il codice aggiornato deve essere come segue:
    Inherits ClassLibrary1.Class1					
  7. Commento come indicato di seguito la prima riga nel gestore dell'evento Click :
    'Dim myArgList As New ClassLibrary1.Class1()					
  8. Modificare la seconda riga nel gestore eventi Click chiamando CreateArgumentList senza un riferimento a un oggetto:
    Xml1.TransformArgumentList = CreateArgumentList("calories", "", TextBox1.Text)					
  9. Ripetere i passaggi nella sezione Verify That It Works.
back to the top

Risoluzione dei problemi

  • Quando si lavora con due lingue, è facile confondere la sintassi. Sintassi di Visual C# non consente un ampio margine di errore. Inoltre, messaggi di errore di Visual C# .NET non sono sempre come richiesta o come intuitivo come messaggi di errore di Visual Basic. NET. Per risolvere questi problemi, vedere la sezione "Equivalenti di linguaggio" di Microsoft .NET Framework Software Development Kit (SDK):
  • Se si desidera utilizzare l'ereditarietà dell'implementazione, studiare orientato a oggetti principi di progettazione e considerare in anticipo architettura dell'applicazione. Un errore comune consiste nell'inserire codice in un'applicazione principale che è necessario ereditare in una libreria di classe. In questo scenario, è impossibile ereditare l'applicazione principale in una libreria di classi a causa delle dipendenze circolari tra. Ad esempio, tentare di aggiungere un riferimento al progetto menu nel progetto ClassLibrary1. È visualizzato il seguente messaggio di errore:
    Impossibile aggiungere un riferimento a "Menu". Aggiunge il progetto come riferimento causerebbe una dipendenza circolare.
back to the top

RIFERIMENTI

Per ulteriori informazioni, vedere i seguenti siti Web Microsoft (informazioni in lingua inglese): back to the top
Isola di dati multilingue codebehind

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 315903 - Ultima revisione: 02/24/2014 06:09:41 - Revisione: 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 KbMtit
Feedback