الأعضاء المسجلين وإنشاء قاعدة بيانات تطوير الويب الخاصة بك ،
تتيح لك نماذج HTML القياسية (عناصر النماذج) تمرير معلومات البيانات وإرسالها إلى صفحة أو تطبيق آخر لاستخدام عناصر النماذج. في ASP.NET 1.x ، تستخدم صفحة الويب آلية التسليم لإرسال بيانات الصفحة إلى الصفحة نفسها. بالنسبة لـ ASP.NET 2.0 ، توسعت وظائفها ويمكن السماح لها بالتقديم عبر الصفحات. دعنا نناقش هذه الميزة الجديدة هذا الأسبوع.
الطريقة التقليدية
لتسهيل المقارنة ، أريد قضاء دقيقة لمراجعة الطرق القديمة لنقل البيانات من صفحات الويب. تحتوي عناصر جدول HTML على سمة إجراء لتحديد الموارد (حتى تُعرف الموارد التي تسمى صفحة الويب أو البرنامج النصي أو البرنامج وما إلى ذلك) للتعامل مع هذه البيانات المقدمة. الرمز التالي هو عينة.
<html>
<head> <title> نموذج html نموذج </title> </head>
<body>
<form name = "frmsample" method = "post" Action = "Target_url">
<type type = "text" name = "fullname" id = "fullname" />
<type type = "button" name = "إرسال" value = "إرسال" /> />
</form>
</body> </html>
سيتم إرسال القيمة التي تم إدخالها في مجال النص (الاسم FullName) إلى الصفحة أو البرنامج المحدد من خلال سمة الإجراء لعنصر الوحدة. بالنسبة لمطوري ASP.NET ، فهو غير شائع للغاية حتى لو استخدموا نموذج HTML قياسي.
عندما يواجه مطورو ASP.NET مهمة تمرير معلومات البيانات من صفحة ويب إلى أخرى ، فإن غرفة الاختيار واسعة للغاية. وهي تشمل متغيرات الجلسة ، ملفات تعريف الارتباط ، متغيرات QueryString ، ذاكرة التخزين المؤقت للتخزين المؤقت) ، وحتى Server.transfer ، ولكن ASP.NET 2.0 يوفر أيضًا خيارًا آخر.
يوفر ASP.NET 2.0 طريقة أخرى لتوفير
عند تصميم ASP.NET 2.0 ، أدركت Microsoft احتياجات عبور البيانات بين صفحات الويب. مع هذا الوعي ، تتم إضافة سمة postbackurl إلى التحكم في الزر (الزر) من ASP.NT. يتيح لك الإشارة إلى مكان تسليم النموذج والبيانات أعلاه عند تقديم المستخدم (أي ، قيمة عنوان URL المحدد بواسطة خاصية Postbackurl). بشكل عام ، النقل عبر الصفحة هو عملية استخدام JavaScript في الخلفية.
<٪@ page language = "vb" ٪><!
<html> <head>
<title> مثال Postback Cross </title>
</head> <body>
<form id = "frmcrosssspostback1" method = "post" runat = "server">
<asp: label id = "lblname" runat = "server" text = "name:"> </asp: label>
<asp: textbox id = "txtname" runat = "server"> < /asp: textbox> <br />
<asp: label id = "lble-mailaddress" runat = "server" text = "البريد الإلكتروني:"> </asp: label>
<asp: textbox id = "txte-mailaddress" runat = "server"> < /asp: textbox> <br />
<asp: button id = "btnsubmit" runat = "server" text = "product" postbackurl = "crosspostback2.aspx" />
</form> </body> </html>
تحتوي صفحة ASP.NET في صفحة ASP.NET على مجالين نصين (اسم اسم (الاسم) والبريد الإلكتروني (البريد الإلكتروني) ، وزر (زر) يستخدم لإرسال البيانات. يتم تحديد سمة Postback لزر التقديم هذا كصفحة ويب أخرى ، بحيث عند إرسال النموذج ، يمكن إرسال البيانات إلى تلك الصفحة. ملاحظة: في هذا المثال ، يتم تعيين عنصر النموذج بواسطة سمة posthod عن طريق تعيين سمة الطريقة لجعل طريقة تقديم المنشور [2] أثناء التقديم ، ولكن هذا ليس ضروري طريقة النشر وفقا للتصميم.
استخدم الصفحة السابقة
عندما يتم تحميل صفحة ASP.NET من خلال مكالمات التسليم عبر الصفحة ، لن يتم تشغيل سمة ISPostback للكائن الموجود عليه. ومع ذلك ، هناك سمة تسمى Previouspage (الصفحة السابقة) تمكنك من الوصول إلى أولئك الذين قاموا بتطبيق التسليم عبر الصفحة.
كلما حدث طلب صفح ، يتم الحفاظ على خاصية الصفحة السابقة للصفحة الحالية للإشارة إلى الصفحات التي يتم تسليمها. إذا لم يأتير توليد الصفحة من تحفيز تسليم الصفحة المتقاطع ، أو أن الصفحة في مجموعات برامج مختلفة ، فلن تتم تهيئة خاصية Prevent Page.
يمكنك تحديد ما إذا كان تحميل الصفحة هو نتيجة تسليم الصفحة عبر الكائن السابق. إذا كانت القيمة لاغية ، فهذا يعني أنها تحميل عادي ، وليس القيمة الفارغة تشير إلى أن صفحة الويب تأتي من تسليم صفحة متقاطعة. بالإضافة إلى ذلك ، تحتوي فئة الصفحة أيضًا على طريقة تسمى isCrossSpagePostback ، والتي يتم استخدامها خصيصًا لتحديد ما إذا كانت الصفحة هي نتيجة تسليم الصفحة المتقاطعة.
بمجرد تحديدك ، يمكنك الوصول إلى عنصر التحكم في صفحة الاتصال بواسطة طريقة FindControl لكائن صفحة Previous. الكود التالي هو الصفحة الثانية في مثالنا ؛
<٪@ page language = "vb" ٪><!
<html> <head>
<title> مثال Postback Cross 2 </title>
</head> <body>
<script language = "vb" runat = "server">
sub page_load ()
إذا لم يكن (page.previouspage ليس شيئًا) ثم)
إذا لم يكن (page.iscrosspagePostback) ثم
Response.write ("الاسم: + ctype (previourpage.findControl (" TxtName ") ، TextBox .Text +" <br>)
Response.write ("البريد الإلكتروني:" + ctype (previourpage.findControl ("TXTE-MAILADDRSS") ، Textbox) .Text + "<br>")
إنهاء إذا
إنهاء إذا
نهاية الفرعية
</script> </body> </html>
تحدد هذه الصفحة ما إذا كان يتم استدعاؤه عن طريق تسليم صفحة متقاطعة. إذا كان الأمر كذلك ، فقم بالوصول إلى القيم من استدعاء الصفحات من خلال طريقة FindControl ، وقم بتحويل عنصر التحكم الذي تم الحصول عليه بواسطة هذه الطريقة إلى التحكم في مربع النص ، ثم عرض محتوى سمات النص (النص).
يمكنك تحويل كائن الصفحة السابق بالكامل إلى نوع صفحة يؤدي إلى تسليم الصفحة المتقاطعة. تتيح لك هذه الطريقة الوصول إلى صفحة الصفحة وطريقة الصفحة. قبل أن أقدم مثالاً على هذه التكنولوجيا ، أحتاج إلى إعادة كتابة المثال الأول لتضمين بعض السمات العالمية. الكود التالي هو القائمة الأولى للسمات.
<٪@ page language = "vb" ٪><!
<html> <head>
<title> مثال Postback Cross </title>
<script language = "vb" runat = "server">
اسم الملكية القراءة العامة
يحصل
إرجاع ME.TXTNAME.TEXT
نهاية الحصول على
نهاية الملكية
ederation property ed readonly mailaddress
يحصل
إعادة Me.txte-mailaddress.text
نهاية الحصول على
نهاية الملكية
</script> </head> <body>
<form id = "frmcrosssspostback1" method = "post" runat = "server">
<asp: label id = "lblname" runat = "server" text = "name:"> </asp: label>
<asp: textbox id = "txtname" runat = "server"> < /asp: textbox> <br />
<asp: label id = "lble-mailaddress" runat = "server" text = "البريد الإلكتروني:"> </asp: label>
<asp: textbox id = "txte-mailaddress" runat = "server"> < /asp: textbox> <br />
<asp: button id = "btnsubmit" runat = "server" text = "product" postbackurl = "crosspostback2.aspx" />
</form> </body> </html>
الآن وقد تم بناء السمات الآن ، يمكنك الوصول إليها بسهولة. لكي تكون متيقظًا ، يجب تحويل كائن Page Class Previouspage إلى النوع الصحيح ، وذلك للوصول إلى سماته بشكل صحيح. يمكن تنفيذ ذلك عن طريق تحويله إلى فئة صفحة مناسبة.
<٪@ page language = "vb" ٪><٪@ page page = "~/crosspostback1.aspx" ٪>
<!
<html> <head>
<title> Cross Postback مثال 3 </title>
</head> <body>
<script language = "vb" runat = "server">
sub page_load ()
قاتمة cpppage مثل crosspostback1_aspx
إذا لم يكن (page.previouspage ليس شيئًا) ثم)
إذا لم يكن (page.iscrosspagePostback) ثم
if (page.previouspage.isvalid) ثم
CPPPAGE = CTYPE (Prectpage ، crosspostback1_aspx)
Response.write ("الاسم: + cppppage.name +" <br> ")
Response.write ("البريد الإلكتروني:" + cpppage.e-mailadddress)
إنهاء إذا
إنهاء إذا
إنهاء إذا
نهاية الفرعية
</script> </body> </html>
اشرح هذا ، فهو يحدد إشارة إلى صفحة الاتصال على رأس الرأس ، بحيث يمكن استخدام هذا النوع المرجعي في الكود. من خلال هذا المرجع ، يستخدم رمز VB.NET الفعلي وظيفة CTYPE لتحويل كائن PrevedPage إلى نوع مناسب. بعد ذلك ، يمكن استخدام هذه السمات مثل عرض رمز.
يتم تذكير استخدام طريقة isValid لكائن الصفحة السابقة في القائمة أعلاه هنا: يضمن خاصية ISValid في الصفحة السابقة أن تكون قد اجتازت جميع التحقق القانوني واختباره قبل العمل.
لخص
هناك العديد من التطبيقات لنقل معلمات البيانات بين الشبكات ، بما في ذلك الحفاظ على معلومات المستخدم الشخصية. يتيح لك حل أجداد الويب ، مثل استخدام QueryString و Cookies ، الإشارة إلى صفحة أخرى من صفحة واحدة عند حدوث التقديم.
ASP.NET 1.1 بالإضافة إلى توفير طرق إضافية ، يمكن أيضًا دعم هذه الطرق جيدًا ، لكن ASP.NET 2.0 تعتمد على تسليم الصفحات المتقاطعة ، مما جعل تطويرًا كبيرًا في هذا الصدد. يجعل بيانات معالجة الويب واحدة من صفحة ويب أخرى بسيطة. عندما تقوم بتطوير برنامج ASP.NET 2.0 التالي ، يجب عليك الاستفادة من مزايا هذا المفهوم الجديد.