Jak spravovat vícejazyčný řešení webových formulářů v Visual Studio .NET nebo Visual Studio 2005

Překlady článku Překlady článku
ID článku: 315903 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek demonstruje použití dat ostrov XML a ovládací prvek .NET XML webového serveru vytvořit malý, vícejazyčný webovou aplikaci projekt, který zobrazuje data XML (Extensible Markup Language). Hlavní aplikace je integrována v Visual Basic .NET nebo Visual Basic 2005. Aplikace používá součást Visual knihovny tříd C# ke znázornění vícejazyčný odkazy a implementace dědičnosti.

Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a požadované aktualizace Service Pack:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional nebo Microsoft Windows XP Server s Microsoft .NET Framework a Microsoft Visual Studio .NET
Tento článek předpokládá znalost následujících témat:
  • Implementace dědičnosti
  • XML a Extensible Stylesheet Language Transformation (XSLT)
  • Microsoft .NET webové serverové ovládací prvky

Vytvořit vícejazyčné ASP.NET Web aplikaci

V následujících kroků vytvořit malá projektu webovou aplikaci ASP.NET umožňuje odběratele vyberte položky nabídky oběd na základě počtu Kalorie. Chcete-li to provést, používá ukázkové řízení serveru WWW XML jednoduchý dokument XML, který obsahuje nabídky data a ŠABLONU stylů XSL k transformaci dat XML. Třída XsltArgumentList třídu z oboru názvů System.Xml.Xsl umožňuje použít parametry transformace.
  1. Vytvořit projekt aplikace Visual Basic Windows následujícím způsobem:
    1. Spusťte Microsoft Visual Studio .NET nebo Microsoft Visual Studio 2005 a možnost Nový projekt.
    2. V části Typy Project klepněte Projekty jazyka. V části šablony klepněte na položku Webovou aplikaci ASP.NET. Přejmenování nabídky projektu a potom klepněte na tlačítko OK.

      Poznámka: V aplikaci Visual Studio 2005 klepněte v části Projekt typyjazyka.
  2. Ujistěte se, že je okno Průzkumníka řešení viditelné. Pokud není, stiskněte kombinaci kláves CTRL + ALT + L.
  3. Nyní máte prostředí Visual Basic .NET nebo Visual Basic 2005 webovou aplikaci projekt v rámci řešení s názvem nabídky. Nastavit tento vícejazyčný řešení, je nutné přidat Visual C# knihovny tříd.

    V řešení okno Průzkumníka nabídku pravým tlačítkem myši, přejděte na příkaz Přidat a možnost Nový projekt. V části Typy projektu klepněte na položku Visual C# projekty. V části šablony na Knihovny tříd. Ponechat výchozí název ClassLibrary1. Klepnutím na tlačítko OK přidáte tuto knihovny tříd řešení.

    Poznámka: V aplikaci Visual Studio 2005 klepněte Visual C# v části Typy projektu.
  4. Class1.cs se zobrazí v okně editoru. Horní toto okno Přidat následující deklarace oboru názvů:
    using System.Xml.Xsl;
    					
  5. Ve skupinovém rámečku veřejné Class1 přidejte následující kód:
    public XsltArgumentList CreateArgumentList(
    string ParamName, string NamespaceURI, string ParamValue)
    {
     XsltArgumentList tal = new XsltArgumentList();
     tal.AddParam(ParamName, NamespaceURI, ParamValue);
     return tal;
    }
    					
  6. Nyní máte Visual C# třídy, která přijímá informace o parametru XSLT a, které vrátí instanci třídy třída XsltArgumentList. Nyní můžete sestavit jazyka aplikace, která bude využívat tuto součást.

    WebForm1.aspx již být otevřen v návrhovém zobrazení. Pokud tomu tak není, poklepejte v okně Průzkumníka řešení WebForm1.aspx. Klepněte na kartu Návrh pod okna Editor přepnout do návrhového zobrazení.
  7. Stisknutím klávesy F4 datovou stránku vlastností. Změnit vlastnost pageLayoutFlowLayout.
  8. Na webový formulář zadejte Maximum kalorií:.
  9. Přidejte ovládací prvky TextBox a ovládacího prvku tlačítko ovládací prvek XML do formuláře následujícím způsobem:
    1. Stiskněte kombinaci kláves CTRL + ALT + X otevřít na panelu nástrojů.
    2. V soupravě nástrojů klepněte na tlačítko Webové formuláře.
    3. Přetáhněte ovládací prvky TextBox a ovládacím prvkem tlačítko z panelu nástrojů a vložte tyto ovládací prvky na webu formuláře.
    4. Stisknutím klávesy F4 přístup na stránce vlastností ovládacího prvku tlačítko.
    5. Změnit vlastnost TextNabídky Filtr.
    6. Umístěte kurzor za tlačítkem a potom stiskněte klávesu ENTER kurzor pro ovládací prvek XML.
    7. Přetáhněte prvek XML webového serveru ze sady nástrojů a umístěte tento ovládací prvek na webový formulář.
    8. Stisknutím klávesy F4 přístup na stránce vlastností ovládacího prvku XML.
    9. Změnit vlastnost DocumentSourceMenu.xml a potom změňte vlastnost TransformSourceMenu.xslt.
  10. Poklepejte na Filtr nabídka vytvoření obslužné rutiny události klepnutí třídu kódem na pozadí webový formulář. Před obslužnou rutinu přidat kód, je nutné přidat odkaz Visual C# knihovny tříd způsobem:
    1. V okně Průzkumníka řešení pod ClassLibrary1odkazy klepněte pravým tlačítkem myši a potom klepněte na tlačítko Přidat odkaz.
    2. Na kartě projekty poklepejte ClassLibrary1. Všimněte si ClassLibrary1 se zobrazí v seznamu Vybrané součásti.
    3. Klepněte na tlačítko OK. Všimněte si, že se zobrazí pod odkazy v aplikaci Web ClassLibrary1.
  11. Následující kód přidejte obslužnou rutinu události klepnutí:
    Dim myArgList As New ClassLibrary1.Class1()
    Xml1.TransformArgumentList = myArgList.CreateArgumentList("calories", "", TextBox1.Text)
    Xml1.Visible = True
    						
    seznam argument, který vrací součást Visual C# umožňuje předat hodnotu ovládací prvek TextBox jako parametr šablony stylů. Tato šablona stylů XSLT příkazy používá k odfiltrovat oběd všechny položky nabídky Kalorie překročit počet, které typy zákazníka. Následující řádek kódu ze šablony stylů ilustruje způsob je přijata a používá parametr:
    <xsl:for-each select="lunch-menu/food[calories <= $calories]">
    					
  12. Použít kód ze sekce Menu.xsltMenu.xml a vytvořit soubory Menu.xml a Menu.xslt. V okně Solution Explorer klepněte pravým tlačítkem myši nabídka projektu a přidejte soubory XML a XSLT.

Úplný výpis kódu

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>
				

Příklad Non dědičnost 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 dědění 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
				

Příklad dědičnosti 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 dědění 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
				

Ověřte, zda funguje IT

  1. Stisknutím klávesy F5 spuštění aplikace v režimu ladění.
  2. Ve výchozím nastavení se zobrazí celou nabídku. Si poznamenejte počty Kalorie pro každou položku.
  3. Do textového pole zadejte číslo Kalorie a pak klepněte na možnost Filtr nabídku. Všimněte si, že se zobrazí pouze ty položky nabídky, které jsou menší nebo rovna této částce Kalorie.
  4. Stiskněte kombinaci kláves SHIFT + F5 Zastavit ladění a vrátit Visual Studio.

Kroky demonstrují vícejazyčný dědičnost

Ke znázornění vícejazyčný dědičnosti, musíte změnit na webu aplikace projektu. Namísto vytváření instance knihovny tříd komponenty, zdědí aplikace z jazyka .NET webový formulář třídu kód pozadí.

Třídu kód pozadí aktuálně zdědí třídu System.Web.UI.Page. Protože Microsoft .NET nepodporuje vícenásobné dědění, musíte přesunout stránky dědičnost třídy třídy Visual C#.
  1. Přidat odkaz na obor názvů System.web v knihovně třídy před úpravou Visual C# kód.
  2. V okně Průzkumníka řešení pod ClassLibrary1odkazy klepněte pravým tlačítkem myši a potom klepněte na tlačítko Přidat odkaz.
  3. Na kartě .NET poklepejte na System.Web.dll. Všimněte si System.Web.dll se zobrazí v seznamu Vybrané součásti.
  4. Klepněte na tlačítko OK. Všimněte si, že se zobrazí pod odkazy v knihovně třídy System.web.
  5. Upravit deklarace Class1 dědění třídy stránky:
    public class Class1 : System.Web.UI.Page
    					
  6. Třídy Visual Basic .NET nebo Visual Basic 2005 kódem na pozadí je nyní připraven dědit Class1. Protože Class1 zdědí třídu stránky, třídu kód pozadí také zdědí třídu stránky prostřednictvím jeho dědičnosti Class1.

    V okně Editor klepněte WebForm1.aspx.vb. Ve skupinovém rámečku deklarace třídy nahradit System.Web.UI.PageClassLibrary1.Class. Aktualizované kód by měl vypadat takto:
    Inherits ClassLibrary1.Class1
    					
  7. Následující komentář mimo první řádek v obslužné rutině události klepnutí:
    'Dim myArgList As New ClassLibrary1.Class1()
    					
  8. Upravit druhý řádek v obslužné rutině události klepnutí voláním CreateArgumentList bez odkaz na objekt:
    Xml1.TransformArgumentList = CreateArgumentList("calories", "", TextBox1.Text)
    					
  9. Opakujte kroky v části Verify That It Works.

Odstraňování potíží

  • Při práci s dva jazyky je snadné matoucí syntaxe. Visual C# syntaxe neumožňuje široký okraj chyba. Navíc Visual C# .NET chybové zprávy nejsou vždy jako řádku nebo jako intuitivní jako Visual Basic .NET chybové zprávy. Tyto potíže vyřešit, naleznete v části "Language ekvivalenty" z Microsoft .NET Framework Software Development Kit (SDK):
    Ekvivalenty jazyk
    http://msdn2.microsoft.com/en-us/library/czz35az4(vs.71).aspx
  • Chcete-li použít implementace dědičnosti prostudovat objektově orientované principům návrhu a architektura aplikací zvažte předem. Běžné překlep je kód umístit do hlavní aplikace, které potřebujete dědit knihovny tříd. V tomto scénáři nemůže dědit hlavní aplikace knihovny tříd kvůli cyklické závislosti. Zkuste například přidat odkaz na projekt nabídka projektu ClassLibrary1. Zobrazí se následující chybová zpráva:
    Nelze přidat odkaz do 'nabídky. Přidání tohoto projektu jako odkaz by způsobit kruhová závislost.

Odkazy

Další informace naleznete na následujících webech společnosti Microsoft:
Základní Instincts: Použití dědičnost v .NET, část 1
http://msdn.microsoft.com/en-us/magazine/cc135806.aspx

Základní Instincts: Použití dědičnost v .NET, část 2
http://msdn.microsoft.com/en-us/magazine/cc301744.aspx

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

Řízení serveru WWW XML
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gnconxmlwebservercontrol.asp

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

Vlastnosti

ID článku: 315903 - Poslední aktualizace: 28. února 2014 - Revize: 5.8
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315903 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku: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