Como gerir multilingues soluções de formulários da Web no Visual Studio .NET ou Visual Studio 2005

Traduções de Artigos Traduções de Artigos
Artigo: 315903 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo demonstra como utilizar um grupo de dados XML e o controlo de servidor Web de XML do .NET para criar um projecto de aplicação Web multilingue, pequeno que apresenta dados XML (Extensible Markup Language). A aplicação principal é criada no Visual Basic .NET ou Visual Basic 2005. A aplicação utiliza um componente de biblioteca Visual C# classe para ilustrar referências multilingues e herança de implementação.

Requisitos

A lista seguinte descreve o hardware recomendado, software, infra-estrutura de rede e service packs que necessita:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional ou Microsoft Windows XP Server com o Microsoft .NET Framework e o Microsoft Visual Studio .NET instalado
Este artigo pressupõe que está familiarizado com os seguintes tópicos:
  • Herança de implementação
  • XML e Extensible Stylesheet Language Transformation (XSLT)
  • Controlos de servidor web do Microsoft .NET

Criar uma aplicação Web ASP.NET multilingue

Os seguintes passos, pode criar um pequeno projecto ASP.NET Web Application que permite que um cliente seleccionar itens de menu do almoço baseado na contagem Caloria. Para efectuar este procedimento, o exemplo utiliza o controlo do servidor Web de XML , um documento XML simples que contém os dados de menu e uma folha de estilos XSL para transformar dados XML. A classe XsltArgumentList do espaço de nomes System.Xml.xsl permite-lhe utilizar parâmetros na transformação.
  1. Crie maneira um projecto de aplicação do Windows do Visual Basic:
    1. Iniciar o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005 e, em seguida, clique em Novo projecto .
    2. Em Project Types , clique em Projectos do Visual Basic . Em modelos , clique em ASP.NET Web Application . Mude o nome do menu projecto e, em seguida, clique em OK .

      Nota No Visual Studio 2005, clique em Visual Basic em Project Types .
  2. Certifique-se que a janela Solution Explorer está visível. Se não for, prima a combinação de teclas CTRL + ALT + L.
  3. Tem agora a shell de um projecto Visual Basic .NET ou Visual Basic 2005 aplicação da Web numa solução de menu com o nome. Para tornar esta uma solução multilingue, tem de adicionar uma biblioteca de classes do C# Visual.

    Na solução janela Explorador, clique com o botão direito do rato menu , aponte para Adicionar e, em seguida, clique em Novo projecto . Em Project Types , clique em Visual C# Projects . Em modelos , clique em Biblioteca de classes . Mantenha o nome predefinido, ClassLibrary1. Clique em OK para adicionar esta biblioteca de classes para a solução.

    Nota No Visual Studio 2005, clique em Visual C# em Project Types .
  4. Class1.cs aparece na janela do Editor. Adicione a seguinte declaração de espaço de nomes na parte superior desta janela:
    using System.Xml.Xsl;
    					
  5. Em Aula1 pública , adicione o seguinte código:
    public XsltArgumentList CreateArgumentList(
    string ParamName, string NamespaceURI, string ParamValue)
    {
     XsltArgumentList tal = new XsltArgumentList();
     tal.AddParam(ParamName, NamespaceURI, ParamValue);
     return tal;
    }
    					
  6. Tem agora uma Visual C# classe que recebe informações de parâmetros XSLT e que devolve uma instância da classe XsltArgumentList . Agora é possível criar a aplicação de Visual Basic que irá consumir este componente.

    Já deve estar aberto na vista de estrutura WebForm1.aspx. Caso contrário, faça duplo clique em WebForm1.aspx na janela Solution Explorer. Clique no separador estrutura abaixo a janela do Editor para mudar para vista de estrutura.
  7. Prima a tecla F4 para aceder a página de propriedades. Altere a propriedade pageLayout para FlowLayout .
  8. No formulário Web, escreva calorias máximo: .
  9. Adicione um controlo de caixa de texto , um controlo de botão e um controlo de XML ao formulário da seguinte forma:
    1. Prima a combinação de teclas CTRL + ALT + X para abrir a caixa de ferramentas.
    2. Na caixa de ferramentas, clique em Formulários da Web .
    3. Arraste um controlo de caixa de texto e um controlo de botão da caixa de ferramentas e largue estes controlos para a Web formulário.
    4. Prima F4 para aceder à página Propriedades do controlo de botão .
    5. Altere a propriedade texto ao Menu de filtro .
    6. Posicione o cursor seguir ao botão e prima ENTER para posicionar o cursor para o controlo de XML .
    7. Arraste um controlo de servidor de Web de XML da caixa de ferramentas e largue este controlo para o formulário da Web.
    8. Prima F4 para aceder à página Propriedades do controlo XML .
    9. Altere a propriedade DocumentSource para Menu.xml e, em seguida, alterar a propriedade TransformSource para Menu.xslt .
  10. Faça duplo clique Filtro de menu para criar um processador de eventos clique na classe de código subjacente do formulário Web. Antes de adicionar código ao processador, terá de adicionar uma referência Library de classe C# Visual da seguinte forma:
    1. Na janela Solution Explorer, em ClassLibrary1 , clique com o botão direito do rato em References e, em seguida, clique em Add Reference .
    2. No separador projectos , faça duplo clique em ClassLibrary1 . Repare que ClassLibrary1 aparece na caixa de lista de Componentes seleccionados .
    3. Clique em OK . Repare que ClassLibrary1 aparece em referências na aplicação Web.
  11. Adicione o seguinte código ao processador de eventos clique :
    Dim myArgList As New ClassLibrary1.Class1()
    Xml1.TransformArgumentList = myArgList.CreateArgumentList("calories", "", TextBox1.Text)
    Xml1.Visible = True
    						
    a lista de argumentos que devolve o componente Visual C# permite-lhe passar o valor do controlo de caixa de texto como um parâmetro para a folha de estilos. Esta folha de estilos utiliza XSLT comandos para filtrar almoço todos os itens de menu que excedam a Caloria contribuem para que os tipos de cliente. A seguinte linha de código a partir da folha de estilos ilustra como o parâmetro é recebido e utilizado:
    <xsl:for-each select="lunch-menu/food[calories <= $calories]">
    					
  12. Utilize o código da Menu.xml e as secções Menu.xslt para criar os ficheiros Menu.xml e Menu.xslt. Na janela Solution Explorer, clique com o botão direito do rato no projecto de menu e, em seguida, adicione os ficheiros XML e .XSLT.

Concluir lista de código

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>
				

Exemplo de herança não 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;
        }
    }
}
				

WebForm1.vb herdar 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
				

Exemplo de herança 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;
        }
    }
}
				

WebForm1.vb herdar 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
				

Verificar se funciona

  1. Prima a tecla F5 para executar a aplicação no modo de depuração.
  2. O menu completo é apresentado por predefinição. Tome nota das contagens Caloria para cada item.
  3. Na caixa de texto, escrever um número de calorias e, em seguida, clique em Menu Filtro . Repare que apenas os itens de menu que são menor ou igual a este valor Caloria aparecem.
  4. Prima a combinação de teclas SHIFT + F5 para parar a depuração e voltar ao Visual Studio.

Passos para demonstrar herança multilingue

Para ilustrar herança multilingue, tem de modificar a Web projecto de aplicação. Em vez de criar uma instância da biblioteca de classe de componente, a aplicação herda o formulário da Web do Visual Basic .NET classe de código subjacente.

A classe de código actualmente herda da classe System.Web.UI.Page . Porque o Microsoft .NET não suporta herança múltipla, terá de mover página herança de classe para a classe do Visual C#.
  1. Adicione uma referência ao espaço de nomes System.Web na biblioteca de classes antes de modificar o Visual C# código.
  2. Na janela Solution Explorer, em ClassLibrary1 , clique com o botão direito do rato em References e, em seguida, clique em Add Reference .
  3. No separador .NET , clique duas vezes em System.Web.dll . Repare que System.Web.dll aparece na caixa de lista de Componentes seleccionados .
  4. Clique em OK . Repare que System.Web aparece em referências na biblioteca de classes.
  5. Modificar a declaração Aula1 herdar da classe de página :
    public class Class1 : System.Web.UI.Page
    					
  6. A classe de código Visual Basic .NET ou Visual Basic 2005 está pronto herdar Aula1 . Porque Aula1 herda da classe de página , a classe de código também herda a classe de página através da respectiva herança do Aula1 .

    Na janela do Editor, clique em WebForm1.aspx.vb . Em declaração da classe, substitua System.Web.UI.Page ClassLibrary1.Class . O código actualizado deve ser apresentado da seguinte forma:
    Inherits ClassLibrary1.Class1
    					
  7. Comentar a primeira linha de processador de evento Click da seguinte forma:
    'Dim myArgList As New ClassLibrary1.Class1()
    					
  8. Modifique a segunda linha no processador de eventos clique chamando CreateArgumentList sem uma referência de objecto:
    Xml1.TransformArgumentList = CreateArgumentList("calories", "", TextBox1.Text)
    					
  9. Repita os passos na secção Verify That It Works.

Resolução de problemas

  • Quando trabalha com dois idiomas, é fácil confundir a sintaxe. Sintaxe de Visual C# não permite uma grande margem de erro. Para além disso, as mensagens de erro do Visual C# .NET não são sempre como linha de comandos ou como intuitiva como mensagens de erro do Visual Basic. NET. Para resolver estes problemas, consulte a secção "Equivalentes de idioma" do Microsoft .NET Framework Software Development Kit (SDK):
    Equivalentes de idioma
    http://msdn2.microsoft.com/en-us/library/czz35az4(vs.71).aspx
  • Se pretender utilizar a herança de implementação, estudar orientada princípios de design e considere a arquitectura de aplicações antecipadamente. Um erro comum é colocar o código numa aplicação principal que tem de herdar na biblioteca de classes. Neste cenário, não pode herdar a aplicação principal na biblioteca de classes devido a dependências circulares. Por exemplo, tente adicionar uma referência ao projecto de menu no projecto ClassLibrary1. Receberá a seguinte mensagem de erro:
    Não foi possível adicionar uma referência a 'Menu'. Adicionar este projecto como uma referência provocaria uma dependência circular.

REFERÊNCIAS

Para mais informações, consulte os seguintes Web sites da Microsoft:
Básicos Instincts: Utilizando herança no. NET, parte 1
http://msdn.microsoft.com/en-us/magazine/cc135806.aspx

Básicos Instincts: Utilizando herança no. NET, parte 2
http://msdn.microsoft.com/en-us/magazine/cc301744.aspx

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

Controlo do servidor Web de XML
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gnconxmlwebservercontrol.asp

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

Propriedades

Artigo: 315903 - Última revisão: 24 de fevereiro de 2014 - Revisão: 5.8
A informação contida neste artigo aplica-se a:
  • 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
Palavras-chave: 
kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315903 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 315903

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