الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مالفرق بين الكود في الpageloadوالكود فe sourc

مغلق
بدأه مرتجى في 14 يناير 2006 · 15 رد · 1,382 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاخوة الكرام

السلام عليكم ورحمة الله وبركاته

وكل عام وانتم بخير والامة الاسلامية ترفل بثوب العزة امين

اما بعد سؤالي هو

مالفرق اذا عملت موقعي واستخدمت كود في صفحة .cs اي الكود الغير ظاهر (pageload )

او استخدمت الكود داخل صفحة الsource التي تدعم html

الرجاء من احبتي اعطائي الفرق من النواحي التالية

1-جودة البرنامج

2-الامان والسرية

3-سهولة البرنامج

4-فروق اخرى تعلمونها

بالنسبة هذا الموضوع مسبب لي قلق لانني اصبحت حائرا فيه فعنما ابحث بالانترنت اجد اكوادا شتى بعضها في pageloadوالبعض الاخر في الsource

الرجاء التوضيح لي اكثر..

اللهم ارحم شهدائك الذين استشهدوا في حج هذا العام وتقبلهم شهداء وتقبل من جميع الحجاج حجهم ياكريم

وإذا حماسُ تبهنستْ آسادُها ،،،، فعلى اليهودِ المارقينَ السّامُ

لا نأسف على غدر الزمان لطالما ،،،،، رقصت على جثث الأسود كلابا

لا تحسبن برقصها تعلوا على أسيادها ،،،،، تبقى الأسود اسود ا والكلاب كلابا

فلاشات اسلامية

#2

2 - الأمان والسرية:

في حال تم اختراق صفحات الموقع يستطيع المخترق قراءة كامل الشيفرة الخاصة بموقعك... بينما عندما تضع المود داخل ملف .cs عندها سيتم تحويلها إلى dll وسيصعب على المخترق الوصول إلى الشيفرة...

3 - سهولة البرنامج:

عندما تكتب شيفرة في .cs فهناك أدوات مساعدة مثل AutoComplete وإمكانية ظهور التوابع عند الضغط على Ctrl+Space وهذه غير متوفر في صفحات aspx...

5 - السرعة:

في حال كتابة الشيفرة داخل ملف cs. سيتم إعادة التحقق منه عند كل تنفيذ للصفحة بينما في حاول تحول إلى dll فستتم ترجمته مرة واحد فقط

لا شك أن الطريقة الأفضل هي كتابة الشيفرة داخل ملف .cs هو الأفضل والأكثر وثوقية... وأرجو من أصحاب الخبرة أن يشاركونا في الموضوع

#3

كلام صحيح تماماً و لكن ملاحظة على السرعة. في كلا الحالتين يتم عمل الكومبايل فقط عند أول تحميل للصفحة أو عند تنزيل تعديلات جديدة.

هناك نقطة أخرى في صالح وضع الكود في ملف منفصل و هو ما يدعى مبدأ "فصل العملية عن المظهر". في هذه الحالة يصبح لديك ملفين أحدهما هو ملف الـcs أو vb أو غيرها (حسب اللغة المستخدمة) و هو يحوي كود عمل الصفحة، و ملف aspx (أو ascx في حالة الكونترولز أو mspx في حالة الـmaster pages) و الذي يحوي مظهر الصفحة. هذه التقسيمة تسمح لك (كمبرمج) بترك موضوع مظهر الصفحة إلى شخص آخر (مصمم ويب مثلاً) دون الحاجة لأن يتدخل أيٌ منكما في عمل الآخر.

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

#4
System Down كتب:
في كلا الحالتين يتم عمل الكومبايل فقط عند أول تحميل للصفحة أو عند تنزيل تعديلات جديدة.

هل هذا الكلام أكيد .... أرجو التوضيح أكثر

#5

انا مع الاخ اسماعيل المحترم اتمنى منك التوضيح اكثر

واريد معرفة هل يمكن عمل اي موقع باي شفرة واي تصميم اريده في .cs بدون تدخل الhtml

انا هنا لا اقصد عدم تدخلها نهائيا ولكن تكون الصفحة html فاضية!!

وإذا حماسُ تبهنستْ آسادُها ،،،، فعلى اليهودِ المارقينَ السّامُ

لا نأسف على غدر الزمان لطالما ،،،،، رقصت على جثث الأسود كلابا

لا تحسبن برقصها تعلوا على أسيادها ،،،،، تبقى الأسود اسود ا والكلاب كلابا

فلاشات اسلامية

#6
إسماعيل عنجريني كتب:
هل هذا الكلام أكيد .... أرجو التوضيح أكثر

عند القيام بتحميل الصفحة يقوم الفريموورك بالبحث عن نسخة مجمعة (compiled) من الصفحة في الكاش Cache الموحد. إذا وجده (نتيجة عملية تحميل سابقة) يتم استخدامه، و إذا لم يجده (أو كان تاريخ آخر تعديل للصفحة أجد من النسخة الموجودة في الكاش) يتم عملية كومبايل و وضع النتيجة في الكاش.

#7
مرتجى كتب:
انا مع الاخ اسماعيل المحترم اتمنى منك التوضيح اكثر

واريد معرفة هل يمكن عمل اي موقع باي شفرة واي تصميم اريده في .cs بدون تدخل الhtml

انا هنا لا اقصد عدم تدخلها نهائيا ولكن تكون الصفحة html فاضية!!

ممكن جداً. هذا ما تقوم به كلاسات الـcustom controls. كل ما في الأمر أن الكلاس الخاص بالصفحة سيقوم ببنائها من الأول للآخر عن طريق أوامر Response.Write أو ما شابه (مبرمجو الـASP 3.0 القديمة يعرفون هذه الطريقة "المكلكعة" :lol: جيداً).

#8

ميزة أخرى هي سهولة التعديل على الكود

فإذا غيرت الكود دون تغيير في تصميم الصفحة

فكل ماعليك لكي تحدث الموقع هو استبدال ملف dll الموجود داخل bin

ولكن المشكلة هي أنه أثناء عملية الاستبدل يتوقف الموقع بالكامل (الزين ما يكمل)

#9

الاخ system down

انا اقصد في الdatalist اقدر في صفحة source ان اعمل جدول داخلها(اي داخل datalist ) بسهولة وداخل الجدول button,textbox,image وغيره

ولكن داخل ال .CS لاعلم بالضبط هل هناك طريقة مفيدةتعمل نفس العمل؟؟!!

والف شكرلك ولاخي ابو انس

........

وإذا حماسُ تبهنستْ آسادُها ،،،، فعلى اليهودِ المارقينَ السّامُ

لا نأسف على غدر الزمان لطالما ،،،،، رقصت على جثث الأسود كلابا

لا تحسبن برقصها تعلوا على أسيادها ،،،،، تبقى الأسود اسود ا والكلاب كلابا

فلاشات اسلامية

#10

أنا لم أعمل كثيراُ مع الـDatalist و لكن لا أرى أي مشكلة. أول حل يطرأ في ذهني هو وضع Label داخل الـDatalist و كتابة كود الـHTML داخل الـLabel. هذا بالنسبة لكود الـHTML العادي. إذا أردت إضافة كونترولز مثل الـasp:textbox أو أي كونترول آخر يتم التحكم به من السيرفر فيمكنك إضافته الى كولكشن controls الخاص بالـlabel.

#11

الاخوة الكرام الرجاء المشاركة معي

كيفية عمل الdatalist يحتوي على اي controls داخل ال itemtemplate للdatalist

اريد التوضيح بكود مكتوب داخل .CS وليس صفحة ال source لانني اعرف الكود الذي في ال source وذلك لكثر الاكواد المكتوبة عنه داخل الsource

جزاكم االله خير الجزاء

وإذا حماسُ تبهنستْ آسادُها ،،،، فعلى اليهودِ المارقينَ السّامُ

لا نأسف على غدر الزمان لطالما ،،،،، رقصت على جثث الأسود كلابا

لا تحسبن برقصها تعلوا على أسيادها ،،،،، تبقى الأسود اسود ا والكلاب كلابا

فلاشات اسلامية

#13

الاخ الكريم System Down

استخدمت نفس الكود الموجود داخل المقالة ولكن كان يظهر لي الخطاء عند السطر التالي

DataGrid1.Columns.Add(tc1);

والخطاء كالتالي

cannot convert from 'System.Web.UI.WebControls.TemplateColumn' to 'System.Web.UI.WebControls.DataControlField'

انا اعرف ما معنى الخطاء ولكن لماذا ظهر والكود في msdn مكتوب بالشكل الذي قراناه ولا اعتقد انهم اخطئوا

وإذا حماسُ تبهنستْ آسادُها ،،،، فعلى اليهودِ المارقينَ السّامُ

لا نأسف على غدر الزمان لطالما ،،،،، رقصت على جثث الأسود كلابا

لا تحسبن برقصها تعلوا على أسيادها ،،،،، تبقى الأسود اسود ا والكلاب كلابا

فلاشات اسلامية

#14

للاخوة االكرام

هل من الممكن استخدام itemtemplateال الموجودة داخلdatalist

داخل صفحة ال.CS تماما كما لو اني استخدمها في صفحة الsource

وارجو تزويدي بتوضيح

وشكراا

وإذا حماسُ تبهنستْ آسادُها ،،،، فعلى اليهودِ المارقينَ السّامُ

لا نأسف على غدر الزمان لطالما ،،،،، رقصت على جثث الأسود كلابا

لا تحسبن برقصها تعلوا على أسيادها ،،،،، تبقى الأسود اسود ا والكلاب كلابا

فلاشات اسلامية

#15

حسناً. قمت ببعض التجارب (تأخرت قليلاً لأنني لا أعمل بسرعة في السي شارب و أفضل الفيبي. تعيش الفيبي!!! تعيش تعيش تعيش!!!).

و الحمد الله نجحت بإضافة ItemTemplate إلى الـDataList عن طريق الكود بشكل كامل.

هذا هو الـHTML

<form id="Form1" method="post" runat="server">
 	 <asp:DataList id="DataList1" 
    runat="server"></asp:DataList>
  </form>

هنا كلاس خاص بالـItemTemplate التي نود إضافتها. لاحظ أنها تستخدم الإنترفيس ITemplate. هذا الـTemplate تحتوي على الآتي بالترتيب:

1. Label يسحب بياناته من الحقل id

2. علامة شرطة.

3. Textbox يسحب بياناته من الحقل name

4. خط أفقي (<br>).

public class TestTemplate : ITemplate
	{
  public void InstantiateIn(Control container)
  {
 	 Label lblID = new Label();
 	 Literal space = new Literal();
            TextBox txtName = new TextBox();
 	 HtmlGenericControl bar = new HtmlGenericControl("br");
            
 	 lblID.DataBinding += new EventHandler(this.BindLabelColumn);
 	 txtName.DataBinding += new EventHandler(this.BindTextColumn);
 	 space.Text=" - ";
 	 
 	 container.Controls.Add(lblID);
 	 container.Controls.Add(space);
 	 container.Controls.Add(txtName);
 	 container.Controls.Add(bar);
  }

  public void BindLabelColumn(object sender, EventArgs e)
  {
 	 Label lbl = (Label)sender;
 	 DataListItem  container = (DataListItem)lbl.NamingContainer;
 	 String strVals =Convert.ToString(DataBinder.Eval(((DataListItem)container).DataItem, "id"));
 	 
 	 lbl.Text  = strVals;
  }

  public void BindTextColumn(object sender, EventArgs e)
  {
 	 TextBox txt = (TextBox)sender;
 	 DataListItem  container = (DataListItem)txt.NamingContainer;
 	 String strVals =Convert.ToString(DataBinder.Eval(((DataListItem)container).DataItem, "name"));
 	 
 	 txt.Text  = strVals;
  }
	}

و هذا الكود الخاص بالصفحة لتعبئة الـDataList و إضافة الـTemplate إليه.

private void Page_Load(object sender, System.EventArgs e)
  {
 	 DataTable tbl = new DataTable();
            
 	 tbl.Columns.Add(new DataColumn("id",typeof(Int32)));
 	 tbl.Columns.Add(new DataColumn("name",typeof(String)));
 	 
 	 DataRow row;
 	 for (int i=1;i<7;i++)
    {
    row = tbl.NewRow();
    row["id"] = i;
    row["name"] = "name # " + i;
    tbl.Rows.Add(row);
                }
 	 
 	 TestTemplate temp = new TestTemplate();

 	 DataList1.ItemTemplate = temp;
 	 DataList1.DataSource=tbl;
 	 DataList1.DataBind();
  }

الكود مجرب و يعمل زي العسل B)

#16
System Down كتب:
الكود مجرب و يعمل زي العسل  B)

وااله جواب شافي ياSystem Down

اتمنى لك السعادة بالدنيا والاخرة ياعسل ;) ;)

وإذا حماسُ تبهنستْ آسادُها ،،،، فعلى اليهودِ المارقينَ السّامُ

لا نأسف على غدر الزمان لطالما ،،،،، رقصت على جثث الأسود كلابا

لا تحسبن برقصها تعلوا على أسيادها ،،،،، تبقى الأسود اسود ا والكلاب كلابا

فلاشات اسلامية

هذا الموضوع مغلق.

مواضيع مشابهة