يوفر ASP.NET WEB FORMS للمطورين نموذجًا ممتازًا للتطوير يعتمد على الأحداث. ومع ذلك، فإن نموذج تطوير التطبيق البسيط هذا جلب لنا بعض المشكلات الصغيرة، على سبيل المثال، في تطبيق ASP التقليدي، يمكنك بسهولة نقل قيمة أو قيم متعددة من صفحة عبر طريقة POST إلى صفحة أخرى (request()/). request.form()/request.querystring())، من الصعب بعض الشيء تنفيذه في ASP.NET باستخدام نفس الطريقة. فيما يلي طرق أخرى لحل هذا الموقف. يوفر لنا ASP.NET ثلاث طرق، إحداهما هي استخدام QueryString لإرسال القيمة المقابلة، والأخرى هي إرسال القيمة المقابلة من خلال متغير الجلسة، والأخرى هي تنفيذها من خلال طريقة Server.Transfer.
1. استخدم سلسلة الاستعلام
تعد سلسلة الاستعلام طريقة بسيطة للغاية لتمرير القيم، وعيبها هو أن القيمة التي سيتم إرسالها سيتم عرضها في شريط عنوان المتصفح، ولا يمكن تمرير الكائنات بهذه الطريقة. من الأفضل استخدام هذه الطريقة إذا كنت تريد تمرير قيمة ليست مهمة جدًا أو قيمة بسيطة. دعونا نستخدم مثالاً صغيرًا لإكمال عمل نقل القيمة، والخطوات هي كما يلي:
1. قم بإنشاء نموذج ويب
2. ضع زر 1 في نموذج الويب الجديد واثنين من TextBox1 وTextBox2
3. قم بإنشاء رمز حدث النقر لزر الزر كما يلي:
Button_click (مرسل الكائن، System.EventArgs e) باطلة خاصة
{
عنوان URL للسلسلة؛
url = "webform2.aspx?name = "+TextBox1.Text + "&Email = "+TextBox2.Text؛
Response.Redirect(url);
}
4. قم بإنشاء صفحة مستهدفة جديدة وقم بتسميتها webform2
5. ضع اثنين من Label1 وLabel2 في webform2
أضف الكود التالي في Page_Load of webform2:
Page_Load (مرسل الكائن، System.EventArgs e) باطلة خاصة
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["Email"];
}
قم بتشغيله ويمكنك رؤية النتائج بعد النقل.
2. استخدام متغيرات الجلسة: يعد استخدام متغيرات الجلسة لتمرير القيم هو الطريقة الأكثر شيوعًا، ولا يمكن لهذه الطريقة تمرير القيمة إلى الصفحة التالية فحسب، بل يمكنها أيضًا تمريرها إلى صفحات متعددة حتى تصبح قيمة متغير الجلسة. سوف تختفي المتغير. خذ مثالا:
1. قم بإنشاء نموذج ويب
2. ضع زر 1 في نموذج الويب الجديد واثنين من TextBox1 وTextBox2
3. قم بإنشاء رمز حدث النقر لزر الزر كما يلي:
Button_click (مرسل الكائن، System.EventArgs e) باطلة خاصة
{
جلسة ["الاسم"]=TextBox1.Text;
جلسة ["البريد الإلكتروني"]=TextBox2.Text;
Response.Redirect("webform2.aspx");
}
4. قم بإنشاء صفحة مستهدفة جديدة وقم بتسميتها webform2
5. ضع اثنين من Label1 وLabel2 في webform2
أضف الكود التالي في Page_Load of webform2:
Page_Load (مرسل الكائن، System.EventArgs e) باطلة خاصة
{
Label1.Text=Session["Name"].ToString();
Label2.Text=Session["Email"].ToString();
جلسة.إزالة("الاسم");
جلسة إزالة("البريد الإلكتروني");
}
قم بتشغيله ويمكنك رؤية النتائج بعد النقل.
3. استخدم Server.Transfer
على الرغم من أن هذه الطريقة معقدة بعض الشيء، إلا أنها لا تزال وسيلة لتمرير القيم على الصفحة.
خذ مثالا:
1. قم بإنشاء نموذج ويب
2. ضع زر 1 في نموذج الويب الجديد واثنين من TextBox1 وTextBox2
3. قم بإنشاء رمز حدث النقر لزر الزر كما يلي:
الفراغ الخاص (مرسل الكائن،System.EventArgs e)
{
Server.Transfer("webform2.aspx");
}
4. قم بإنشاء عملية لإرجاع رموز القيم الخاصة بعناصر تحكم TextBox1 وTextBox2 كما يلي:
اسم السلسلة العامة
{
الحصول على {return TextBox1.Text؛}
}
سلسلة البريد الإلكتروني العامة
{
الحصول على {العودة TextBox2.Text؛}
}
5. قم بإنشاء صفحة مستهدفة جديدة باسم webform2
6. ضع اثنين من Label1 وLabel2 في نموذج الويب 2
أضف الكود التالي في Page_Load of webform2:
Page_load (مرسل الكائن، System.EventArgs e) باطلة خاصة
{
// أنشئ مثيلًا لنموذج الويب
webform1 wf1;
// احصل على المقبض الذي تم إنشاء مثيل له
wf1=(webform1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.Email;
}
هذه الطرق الثلاث شائعة.