Visual Studio .NET 또는 Visual Studio 2005의 다국어 웹 양식 솔루션을 관리하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 315903 - 이 문서가 적용되는 제품 보기.
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 확장 태그 언어 (XML) 데이터를 표시하는 작고 다국어 웹 응용 프로그램 프로젝트를 만들 수 있는 XML 데이터 아일랜드 및 .NET XML 웹 서버 컨트롤을 사용하는 방법을 보여 줍니다. Visual Basic .NET 또는 Visual Basic 2005 주 응용 프로그램이 빌드됩니다. 응용 프로그램이 Visual C# 클래스 라이브러리 구성 요소를 사용하여 여러 언어 참조 및 구현 상속을 보여 줍니다.

요구 사항

다음은 권장되는 하드웨어, 소프트웨어, 네트워크 인프라 및 필요한 서비스 팩의 목록입니다.
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional 또는 Microsoft .NET Framework 및 Microsoft Visual Studio 설치된 .NET Microsoft Windows XP 서버
이 문서에서는 사용자가 다음 항목을 잘 알고 있다고 가정합니다.
  • 구현 상속
  • XML 및 확장 가능한 스타일시트 언어 변환 (XSLT)
  • Microsoft .NET은 웹 서버 컨트롤

다국어 ASP.NET 웹 응용 프로그램 만들기

작은 만드는 다음 단계는 고객 점심 메뉴 항목을 선택할 수 있도록 ASP.NET 웹 응용 프로그램 프로젝트를 calorie 횟수를 기준으로. 이렇게 하려면 이 샘플에서는 메뉴 데이터 및 XML 데이터를 변환하는 XSL 스타일시트를 포함하는 간단한 XML 문서를 XML 웹 서버 컨트롤을 사용합니다. System.Xml.Xsl 네임스페이스 XsltArgumentList 클래스에서 변환에서 매개 변수를 사용할 수 있습니다.
  1. 다음과 같이 Visual Basic Windows 응용 프로그램 프로젝트를 만듭니다.
    1. Visual Studio .NET 또는 Microsoft Visual Studio 2005를 시작하고 새 프로젝트 를 클릭하십시오.
    2. 프로젝트 형식Visual Basic 프로젝트 를 클릭하십시오. 템플릿ASP.NET 웹 응용 프로그램 을 누릅니다. 프로젝트 메뉴, 이름을 바꾸고 확인 을 누릅니다.

      참고 Visual Studio 2005에서 프로젝트 형식 에서 Visual Basic 을 클릭하십시오.
  2. 솔루션 탐색기 창이 표시되는지 확인하십시오. 그렇지 않은 경우 Ctrl + Alt + L을 키 조합을 누릅니다.
  3. 이제 Visual Basic 2005 웹 응용 프로그램 또는 Visual Basic .NET 프로젝트 메뉴 이름의 솔루션 내에서 셸이 있습니다. 이 다국어 솔루션을 만들려면 Visual C# 클래스 라이브러리 추가해야 합니다.

    솔루션 탐색기 창에서 마우스 오른쪽 단추로 클릭하고 메뉴, 추가 를 가리킨 다음 새 프로젝트 를 클릭합니다. 프로젝트 형식Visual C# 프로젝트 를 클릭하십시오. 템플릿클래스 라이브러리 를 클릭하십시오. ClassLibrary1 기본 이름을 유지하십시오. 이 클래스 라이브러리 솔루션에 추가하려면 확인 을 클릭하십시오.

    참고 Visual Studio 2005에서 Visual C#프로젝트 형식 에서 클릭하십시오.
  4. Class1.cs는 편집기 창에 나타납니다. 이 창의 위쪽 다음 네임스페이스 선언을 추가합니다:
    using System.Xml.Xsl;
    					
  5. 공용 Class1 아래에 다음 코드를 추가하여:
    public XsltArgumentList CreateArgumentList(
    string ParamName, string NamespaceURI, string ParamValue)
    {
     XsltArgumentList tal = new XsltArgumentList();
     tal.AddParam(ParamName, NamespaceURI, ParamValue);
     return tal;
    }
    					
  6. XSLT 매개 변수 정보를 가져오고 XsltArgumentList 클래스의 인스턴스를 반환하는 Visual C# 클래스를 만들었습니다. 이제 이 구성 요소를 사용하는 Visual Basic 응용 프로그램을 구축할 수 있습니다.

    이미 WebForm1.aspx 디자인 보기에서 열려 있어야 합니다. 그렇지 않은 경우 솔루션 탐색기에서 WebForm1.aspx 를 두 번 클릭합니다. 디자인 보기로 전환하려면 편집기 창 아래에 있는 디자인 탭을 클릭하십시오.
  7. 속성 페이지에 액세스하려면 F4 키를 누릅니다. pageLayout 속성은 FlowLayout 로 변경하십시오.
  8. Web Form에 입력한 최대 칼로리:.
  9. 다음과 같이 TextBox 컨트롤, 단추 컨트롤 및 Xml 컨트롤을 폼에 추가하십시오.
    1. 도구 상자를 열려면 Ctrl + Alt + X 키 조합을 누릅니다.
    2. 도구 상자에서 Web Forms 를 클릭하십시오.
    3. 이러한 웹 컨트롤을 도구 상자에서 TextBox 컨트롤 및 Button 컨트롤을 끌어서 놓기 폼.
    4. 단추 컨트롤에 대한 속성 페이지에 액세스하려면 F4 키를 누릅니다.
    5. 필터 메뉴Text 속성을 변경하십시오.
    6. 단추 다음에 커서를 놓은 다음 XML 컨트롤에 대한 커서를 놓고 Enter 키를 누릅니다.
    7. Xml 웹 서버 컨트롤을 도구 상자에서 끌어 이 컨트롤을 Web Form에 끌어다 놓습니다.
    8. Xml 컨트롤 속성 페이지에 액세스하려면 F4 키를 누릅니다.
    9. Menu.xmlDocumentSource 속성을 변경하고 수 Menu.xsltTransformSource 속성을 변경하십시오.
  10. 필터 메뉴 Web Form 코드 숨김 클래스에서 Click 이벤트 처리기를 만들려면 두 번 클릭하십시오. 처리기에 코드를 추가하기 전에 다음과 같이 Visual C# 클래스 라이브러리에 대한 참조를 추가해야 합니다.
    1. 솔루션 탐색기 창에서 ClassLibrary1, 참조 를 마우스 오른쪽 단추로 클릭한 다음 참조 추가 클릭하십시오.
    2. 프로젝트 탭에서 ClassLibrary1 두 번 클릭하십시오. ClassLibrary1선택한 구성 요소 목록 상자에 나타납니다.
    3. 확인 을 클릭하십시오. ClassLibrary1 웹 응용 프로그램에서 참조 아래에 나타납니다.
  11. Click 이벤트 처리기에 다음 코드를 추가합니다:
    Dim myArgList As New ClassLibrary1.Class1()
    Xml1.TransformArgumentList = myArgList.CreateArgumentList("calories", "", TextBox1.Text)
    Xml1.Visible = True
    						
    Visual C# 구성 요소를 반환하는 인수 목록에는 스타일시트에 TextBox 컨트롤의 값을 매개 변수로 전달할 수 있습니다. 이 스타일시트에 있는 calorie 초과할 메뉴 항목 개수를 모든 점심 고객 형식에 필터링하려면 XSLT 명령을 사용합니다. 스타일시트에 코드에서 다음 줄을 매개 변수를 받은 및 사용하는 방법을 보여 줍니다.
    <xsl:for-each select="lunch-menu/food[calories <= $calories]">
    					
  12. Menu.xmlMenu.xslt 섹션 코드에서를 Menu.xml 및 Menu.xslt 파일을 만들 수 있습니다. 솔루션 탐색기 창에서 메뉴 프로젝트를 마우스 오른쪽 단추로 클릭하고 .xml 및 .xslt 파일을 추가하십시오.

코드 목록 완료

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>
				

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

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

It 제대로 작동하는지 확인하십시오.

  1. 디버그 모드에서 응용 프로그램을 실행하려면 F5 키를 누릅니다.
  2. 기본적으로 전체 메뉴가 나타납니다. 각 항목에 대해 calorie 수를 기록해 두십시오.
  3. 텍스트 상자에 칼로리, 수를 입력한 다음 필터 메뉴 를 누릅니다. 이 calorie 양은 작거나 해당 메뉴 항목만 나타납니다.
  4. 디버깅을 중지하려면 및 Visual Studio 돌아가려면 Shift + F5 키 조합을 누릅니다.

다국어 상속을 설명하기 위한 단계

다국어 상속을 설명하기 위해 웹 수정하는 응용 프로그램 프로젝트를. 클래스 라이브러리 인스턴스를 만드는 대신 구성 요소, 응용 프로그램을 Visual Basic .NET 웹 폼에서 상속되는 코드 숨김 클래스입니다.

현재 코드 숨김 클래스는 System.Web.UI.Page 클래스를 상속합니다. Microsoft .NET 다중 상속을 지원하지 않으므로 Visual C# 클래스 페이지 클래스 상속을 이동해야 합니다.
  1. Visual C# 수정하기 전에 클래스 라이브러리 System.Web 네임스페이스에 대한 참조를 추가해야 코드를.
  2. 솔루션 탐색기 창에서 ClassLibrary1, 참조 를 마우스 오른쪽 단추로 클릭한 다음 참조 추가 클릭하십시오.
  3. .NET 탭에서 System.Web.dll 두 번 클릭하십시오. 선택한 구성 요소 목록 상자를 System.Web.dll 나타납니다.
  4. 확인 을 클릭하십시오. System.Web 클래스 라이브러리 참조 아래에 나타납니다.
  5. Page 클래스는 상속할 Class1 선언에 수정할:
    public class Class1 : System.Web.UI.Page
    					
  6. Visual Basic .NET 또는 Visual Basic 2005 코드 숨김 클래스는 이제 Class1 상속할 수 있습니다. 또한 코드 숨김 클래스를 Class1페이지 클래스에서 상속되는 때문에 해당 상속을 통해 Page 클래스를 Class1의 상속합니다.

    편집기 창에서 WebForm1.aspx.vb 을 클릭하십시오. 클래스 선언 아래에 System.Web.UI.Page를 함께 ClassLibrary1.Class 바꿉니다. 업데이트된 코드를 다음과 같이 나타나야 합니다:
    Inherits ClassLibrary1.Class1
    					
  7. 다음과 같이 Click 이벤트 처리기 첫째 줄에 주석:
    'Dim myArgList As New ClassLibrary1.Class1()
    					
  8. Click 이벤트 처리기 두 번째 줄에서 않고 개체 참조를 CreateArgumentList 호출하여 수정:
    Xml1.TransformArgumentList = CreateArgumentList("calories", "", TextBox1.Text)
    					
  9. Verify That It Works 절에 나와 있는 단계를 반복하십시오.

문제 해결

  • 두 가지 언어로 작업할 때 손쉽게 구문을 혼동할 수 있습니다. Visual C# 구문 오류의 넓은 여백을 허용하지 않습니다. 또한 Visual C# .NET 오류 메시지는 항상 프롬프트 또는 Visual Basic .NET 오류 메시지로 직관적인 아닙니다. 이러한 문제를 해결하는 중 해당 Microsoft .NET Framework 소프트웨어 개발 키트 (SDK) "언어 관련 정보" 섹션을 참조하십시오.
    언어 관련 정보
    http://msdn2.microsoft.com/en-us/library/czz35az4(vs.71).aspx
  • 구현 상속을 사용할 경우, 개체 지향 설계 원칙을 살펴보고 응용 프로그램 아키텍처를 미리 고려해야 합니다. 일반적인 실수는 클래스 라이브러리에서 상속해야 하는 기본 응용 프로그램 코드를 넣을 수 있습니다. 이 시나리오에서는 순환 종속성 때문에 클래스 라이브러리 주 응용 프로그램에서 상속할 수 없습니다. 예를 들어, ClassLibrary1 프로젝트 메뉴 프로젝트에 대한 참조를 추가해 보십시오. 다음과 같은 오류 메시지가 나타납니다.
    '메뉴' 참조를 추가할 수 없습니다. 이 프로젝트를 참조로 추가하면 순환 종속성이 발생할 수 있습니다.

참조

자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
기본 Instincts: 1 .NET에서 상속 사용
http://msdn.microsoft.com/en-us/magazine/cc135806.aspx

기본 Instincts: 2 부 .NET에서 상속 사용
http://msdn.microsoft.com/en-us/magazine/cc301744.aspx

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

Xml 웹 서버 컨트롤
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gnconxmlwebservercontrol.asp

XML 데이터 제도
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/comsrv2k/htm/cs_tp_bizdesk_nqok.asp

속성

기술 자료: 315903 - 마지막 검토: 2014년 2월 24일 월요일 - 수정: 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 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

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