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

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
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
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.

back to the top

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
back to the top

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.
back to the top

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

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;        }    }}				
back to the top

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

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;        }    }}				
back to the top

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

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.
back to the top

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.
back to the top

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):
  • 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.
back to the top

REFERÊNCIAS

Para mais informações, consulte os seguintes Web sites da Microsoft: back to the top
Ilha de dados codebehind multilíngue

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 315903 - Última Revisão: 02/24/2014 06:09:41 - Revisão: 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 KbMtpt
Comentários
ERROR: at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)