كيفية إدارة الحلول "نماذج ويب" متعدد اللغات في Visual Studio .NET أو Visual Studio 2005

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية315903
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الموجز
توضح هذه المقالة كيفية استخدام بيانات XML - جزيرة تحكم ملقم ويب Xml .NET لإنشاء مشروع "تطبيق ويب" الصغيرة، متعدد اللغات التي تعرض البيانات لغة التوصيف الموسعة (XML). تم إنشاء التطبيق الرئيسي في Visual Basic .NET أو 2005 Visual Basic. يستخدم التطبيق مكون مكتبة Visual C# لـ الفئات لتوضيح مراجع متعدد اللغات والتوريث التنفيذ.

back to the top

متطلبات

توضح القائمة التالية الأجهزة الموصى بها برامج البنية الأساسية للشبكة و حزم الخدمات التي تحتاجها:
  • Microsoft Windows 2000 Professional أو نظام التشغيل Microsoft Windows 2000 Server Microsoft Windows XP Professional أو Microsoft Windows XP Server مع Microsoft .NET Framework و Microsoft Visual Studio .NET تثبيت
تفترض هذه المقالة كنت معتاداً على المواضيع التالية:
  • توريث التنفيذ
  • XML و تحويل لغة صفحات الأنماط الموسعة (XSLT)
  • عناصر تحكم ملقم ويب Microsoft .NET
back to the top

إنشاء تطبيق ويب ASP.NET متعدد اللغات

في الخطوات التالية لإنشاء صغير المشروع تطبيق ويب ASP.NET يسمح عميل لتحديد عناصر القائمة الغداء استناداً إلى عدد الحراري. للقيام بذلك، يستخدم النموذج عنصر تحكم ملقم الويب Xml مستند XML بسيط يحتوي على بيانات القائمة على ورقة نمط XSL لتحويل بيانات XML. يسمح فئة XsltArgumentList من مساحة الاسم System.Xml.Xsl استخدم المعلمات في التحويل لها.
  1. إنشاء مشروع Visual Basic تطبيق Windows كما يلي:
    1. بدء تشغيل Microsoft Visual Studio .NET أو Microsoft Visual Studio 2005 ثم انقر فوق مشروع جديد.
    2. ضمن أنواع Project ، انقر فوق مشاريع Visual Basic. ضمن قوالب ، انقر فوق تطبيق ويب ASP.NET. إعادة تسمية القائمة المشروع ثم انقر فوق موافق.

      ملاحظة في Visual Studio 2005 ، انقر فوق Visual Basic ضمن أنواع Project.
  2. تأكد من رؤية إطار "مستكشف الحلول". إذا لم يكن اضغط تركيبة المفاتيح CTRL + ALT + L.
  3. لديك الآن shell مشروع تطبيق ويب 2005 Visual Basic أو Visual Basic .NET داخل حل باسم قائمة. لجعل هذا حل متعدد اللغات يجب إضافة Visual C# "فئة مكتبة".

    في الحل إطار مستكشف Windows، انقر بزر الماوس الأيمن فوق قائمة ، أشر إلى إضافة ، ثم انقر فوق مشروع جديد. ضمن أنواع Project ، انقر فوق Visual C# المشاريع. ضمن قوالب ، انقر فوق مكتبة الفئات. الاحتفاظ الاسم الافتراضي ClassLibrary1. انقر فوق موافق لإضافة هذا "مكتبة الفئات" إلى الحل.

    ملاحظة في Visual Studio 2005 ، انقر فوق Visual C# ضمن أنواع Project.
  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. لديك الآن Visual C# فئة التي تأخذ معلومات المعلمة XSLT وإرجاع مثيل فئة XsltArgumentList. يمكنك الآن إنشاء تطبيق Visual Basic الذي سوف تستهلك هذا المكون.

    يجب أن يكون WebForm1.aspx مفتوحة في Design View بالفعل. إذا لم يكن انقر نقراً مزدوجاً فوق WebForm1.aspx في إطار "مستكشف الحلول". انقر فوق علامة التبويب تصميم أسفل إطار محرر للتبديل إلى "طريقة عرض التصميم".
  7. اضغط المفتاح F4 للوصول إلى صفحة الخاصية. تغيير خاصية pageLayout إلى FlowLayout.
  8. في "نموذج ويب" اكتب "السعرات الحرارية الأقصى":.
  9. إضافة عنصر تحكم مربع نص عنصر تحكم زر والتحكم Xml إلى النموذج كما يلي:
    1. اضغط تركيبة المفاتيح CTRL + ALT + X لفتح مربع الأدوات.
    2. في مربع الأدوات، انقر فوق نماذج ويب.
    3. اسحب عنصر تحكم مربع نص "و" عنصر تحكم زر من مربع الأدوات وإفلات عناصر التحكم هذه إلى الويب نموذج.
    4. اضغط F4 للوصول إلى صفحة الخصائص لعنصر التحكم زر.
    5. تغيير الخاصية Text إلى قائمة التصفية.
    6. ضع رأس المؤشر بعد الزر ومن ثم اضغط ENTER لوضع المؤشر لعنصر التحكم Xml.
    7. اسحب عنصر تحكم ملقم ويب Xml من مربع الأدوات وإفلاتها عنصر التحكم هذا إلى "نموذج ويب".
    8. اضغط F4 للوصول إلى صفحة خصائص عنصر التحكم Xml.
    9. تغيير خاصية DocumentSource إلى Menu.xml ثم قم بتغيير الخاصية TransformSource إلى Menu.xslt.
  10. انقر نقراً مزدوجاً فوق قائمة تصفية إنشاء معالج حدث انقر في فئة الخلفية التعليمات البرمجية من "نموذج ويب". قبل إضافة التعليمات البرمجية إلى المعالج يجب إضافة مرجع إلى Visual C# "فئة مكتبة" كما يلي:
    1. في إطار "مستكشف الحلول" ضمن ClassLibrary1 انقر بزر الماوس الأيمن فوق مراجع ومن ثم انقر فوق إضافة مرجع.
    2. على علامة التبويب "المشاريع" ، انقر نقراً مزدوجاً فوق ClassLibrary1. لاحظ ظهور ClassLibrary1 في مربع القائمة المكونات المحددة.
    3. انقر فوق موافق. لاحظ ظهور ClassLibrary1 ضمن مراجع في "تطبيق ويب".
  11. إضافة التعليمات البرمجية التالية إلى معالج الأحداث نقر:
    Dim myArgList As New ClassLibrary1.Class1()Xml1.TransformArgumentList = myArgList.CreateArgumentList("calories", "", TextBox1.Text)Xml1.Visible = True						
    قائمة الوسيطة ترجع مكون Visual C# يسمح لك لتمرير قيمة عنصر تحكم مربع نص كمعلمة إلى لورقة الأنماط. يستخدم هذا ورقة أنماط XSLT أوامر تصفية الغداء كافة عناصر القائمة التي تتجاوز الحراري في حساب عدد أنواع العملاء. السطر التالي من التعليمات البرمجية من لورقة الأنماط يوضح كيفية تلقي المعلمة ويستخدم:
    <xsl:for-each select="lunch-menu/food[calories <= $calories]">					
  12. استخدام التعليمات البرمجية من Menu.xml ومقاطع Menu.xslt لإنشاء Menu.xml وملفات Menu.xslt. في إطار "مستكشف الحلول" ، انقر بزر الماوس الأيمن فوق القائمة المشروع ثم قم بإضافة .xslt وملفات .xml.
back to the top

إتمام سرد التعليمات البرمجية

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

مثال توريث غير 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

System.Web.UI.Page توريث WebForm1.vb

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

مثال توريث 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

ClassLibrary1 توريث WebForm1.vb

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

تحقق من التي من عمل

  1. اضغط المفتاح F5 لتشغيل التطبيق في وضع التصحيح.
  2. تظهر القائمة بالكامل بشكل افتراضي. تأخذ ملاحظة تحسب الحراري لكل عنصر.
  3. في مربع النص، اكتب رقم السعرات الحرارية ثم انقر فوق قائمة التصفية. لاحظ ظهور عناصر القائمة التي أقل من أو يساوي هذا المقدار الحراري فقط.
  4. اضغط تركيبة المفاتيح SHIFT + F5 إيقاف تصحيح "و" للعودة إلى Visual Studio.
back to the top

خطوات شرح توريث متعدد اللغات

يجب عليك تعديل الويب لتوضيح توارث متعدد اللغات المشروع التطبيق. بدلاً من إنشاء مثيل من "مكتبة الفئات" يرث التطبيق مكون من نموذج ويب Visual Basic .NET فئة الخلفية التعليمات البرمجية.

يرث فئة الخلفية رمز الفئة System.Web.UI.Page حالياً. لأنه لا يعتمد Microsoft .NET توريث متعددة يجب عليك نقل وراثة الفئة الصفحة إلى فئة Visual C#.
  1. إضافة مرجع إلى مساحة الاسم System.Web في "مكتبة الفئات" قبل تعديل في Visual C# التعليمات البرمجية.
  2. في إطار "مستكشف الحلول" ضمن ClassLibrary1 انقر بزر الماوس الأيمن فوق مراجع ومن ثم انقر فوق إضافة مرجع.
  3. على علامة التبويب .NET ، انقر نقراً مزدوجاً فوق System.Web.dll. لاحظ ظهور System.Web.dll في مربع القائمة المكونات المحددة.
  4. انقر فوق موافق. لاحظ ظهور System.Web ضمن مراجع في "مكتبة الفئات".
  5. تعديل تعريف Class1 أن ترث الفئة الصفحة:
    public class Class1 : System.Web.UI.Page					
  6. فئة الخلفية التعليمات البرمجية Visual Basic .NET أو Visual Basic 2005 جاهز الآن أن ترث Class1. لأنه يرث Class1 فئة الصفحة ، ترث الفئة الخلفية التعليمات البرمجية أيضاً فئة الصفحة خلال الوراثة به Class1.

    في إطار "محرر" ، انقر فوق WebForm1.aspx.vb. تحت تعريف فئة استبدال System.Web.UI.PageClassLibrary1.Class. يجب أن يظهر رمز المحدثة كما يلي:
    Inherits ClassLibrary1.Class1					
  7. التعليق الخروج السطر الأول في معالج الأحداث انقر كما يلي:
    'Dim myArgList As New ClassLibrary1.Class1()					
  8. تعديل السطر الثاني في معالج الأحداث انقر عن طريق استدعاء CreateArgumentList بدون مرجع كائن:
    Xml1.TransformArgumentList = CreateArgumentList("calories", "", TextBox1.Text)					
  9. كرر الخطوات في المقطع Verify That It Works.
back to the top

استكشاف الأخطاء وإصلاحها

  • عند العمل مع لغتين فمن السهل تخلط بين بناء الجملة. لا يسمح Visual C# بناء الجملة هامش واسع الخطأ. علاوة على ذلك، رسائل الخطأ Visual C# .NET غير دوماً موجه أو وبديهية كما أنها رسائل خطأ Visual Basic .NET. لاستكشاف هذه المشكلات وإصلاحها، راجع قسم "لغة لمفاتيح" من Microsoft .NET Framework تطوير مجموعة البرامج (SDK):
  • إذا كنت ترغب في استخدام تطبيق توريث لدراسة موجهة مبادئ تصميم ثم خذ بعين الاعتبار هندسة التطبيق مقدماً. خطأ شائعة هي وضع التعليمات البرمجية في تطبيق أساسي الذي تحتاج إلى ترث في "مكتبة الفئات". في هذا السيناريو، لا ترث التطبيق الرئيسي في "مكتبة الفئات" لوجود تبعيات دائرية. على سبيل المثال، حاول إضافة مرجع إلى المشروع القائمة في المشروع ClassLibrary1. تظهر رسالة الخطأ التالية:
    تعذر إضافة مرجع إلى 'قائمة'. يؤدي إضافة هذا المشروع كمرجع تبعية دائرية.
back to the top

مراجع

لمزيد من المعلومات، ارجع إلى مواقع Microsoft التالية على الويب: back to the top
جزيرة بيانات codebehind لغات متعددة

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 315903 - آخر مراجعة: 02/28/2014 00:35:37 - المراجعة: 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 KbMtar
تعليقات