
أثناء عملي على مشروع التخرج على بيئة .NET 3.5 C# & ASP.NET with SQL SERVER 2008 R2
واجهتنا العديد من المشاكل .. البرمجية والتقنية المختلفة
وتم ايجاد حلول لمعظم هذه المشكال ..
واريد انا في سلسة ان اشرح ابرز المشكال .. والتقنيات .. والحلول المستخدمة ..
المشكلة اليوم .. كانت في تسمية المعرفات … او كما تسمى ID .. لعناصر صفحة الويب ..
لنفرض لدينا المثال التالي …
نريد ان نشغل صفحة لانشاء نموذج لارسال رسالة ..
واستدعاء هذه الصفحة وتنفيذ المطلوب عن طريق خدمة ويب Web Service ..
وللاتصال بها سنحتاج الى JSON لتمرير البيانات واخذ النتائج ..
ولكن التعامل مع معرفات الصفحات في هذه الحالة سينتج عنه الكثير من المشاكل .. واهم هذه المشاكل تغير المعرفات الاساسية id لكل عنصر
حيث تقوم بيئة ال .NET بتغيير الاسماء الموضوعة الى اسماء اخرى فريدة ومعرفة من قبل البيئة ..
مثلا نفرض انه ليدنا مربع نص TEXT BOX له ID معين كما يلي
$(‘#txtSenderUniqueName’) …
$(‘#ct101_txtSenderUniqueName’)…
نلاحظ الصعوبة في الحالة الثاني .. حيث كلما ازدادت مستويات الصفحات ازداد تعقيد الاسم الجديد .ct101_panelr_ …
لذلك نريد ان نجعل المعرفات ثابتة … ولا تتغير ..
لتنفيذ ذلك نقوم بما يلي ..
نقوم بفتح ملف الكود المصدري C# SOURCE CODE للصفحة المرادة او لل User Control نقوم بالتحميل الزائد للتوابع التالية
string UniqueID
string ClientID
وذلك كما يلي .. .
/// <summary>
/// Override to force simple IDs all around
/// </summary>
public override string UniqueID
{
get
{
return this.ID;
}
}
/// <summary>
/// Override to force simple IDs all around
/// </summary>
public override string ClientID
{
get
{
return this.ID;
}
}
وبذلك نكون قد انتهينا …
وعندما يتم تشغيل الصفحة فان المعرف الذي ياخذه كل عنصر هو نفس المعرف (الاسم) الذي قمنا بوضعه اثناء التصميم ..
في حال وجود اي سؤال الرجاء وضعه في التعليقات … وسوف اقوم بالاجابة عليه ..
شكرا لكم .. EADOKING …





you can always set the ClientIDMode to be Static property for each control like:
thanks .. I will try it