متى المطلق آخر يمكنك الاتصال الصفحة.ClientScript.RegisterClientScriptBlock?

StackOverflow https://stackoverflow.com/questions/253267

سؤال

أنا بحاجة إلى إخراج بعض جافا سكريبت في WebControl استنادا إلى بعض ومعالجة بعض الخصائص التي يمكن للمستهلك مجموعة ، على تحميل الصفحة سوف تكون في وقت مبكر.

متى آخر يمكنني الاتصال RegisterClientScriptBlock و مازال الناتج على الصفحة ؟

هل كانت مفيدة؟

المحلول

وOnPreRender

وأو، إذا كنت تجاوز تجعل .... قبل استدعاء "base.Render"

نصائح أخرى

السؤال القديم, ولكن مؤخرا التعامل مع هذا الأمر لإعطاء تيم الإجابة أكثر قليلا من التوضيح توضيح بعض المعلومات الخاطئة:

إذا كنت تستخدم RegisterClientScriptBlock كأنك تطلب ، ثم البرامج النصية الخاصة بك وسوف يكون الناتج خلال ClientScriptManager.RenderClientScriptBlocks ، وهو ما يسمى خلال الصفحة.BeginFormRender -- لكنه دعا في الواقع من خلال شكل ، وليس عن طريق الصفحة نفسها.

هنا تسلسل:

  • الصفحة.ProcessRequestMain (عندما تصل إلى تقديم القسم) المكالمات
  • (صفحة الفئة الأساسية) السيطرة.RenderControl الذي يدعو
  • التحكم.RenderChildren التي الحلقات من خلال جميع الطفل يتحكم في نهاية المطاف المكالمات
  • HtmlForm.RenderControl الذي يدعو
  • HtmlForm.RenderChildren وهو ما نهتم به

من عاكس:

protected internal override void RenderChildren(HtmlTextWriter writer)
{
    Page page = this.Page;
    if (page != null)
    {
        page.OnFormRender();
        page.BeginFormRender(writer, this.UniqueID);
    }
    base.RenderChildren(writer);
    if (page != null)
    {
        page.EndFormRender(writer, this.UniqueID);
        page.OnFormPostRender();
    }
}

إشعار المكالمات إلى الصفحة.BeginFormRender الصفحة.EndFormRender.بين شكل مكالمات انها قاعدة.RenderChildren التي سيتم استدعاء في نهاية المطاف تجعل الأسلوب على عهدك تحكم المستخدم.لذلك أن يكون صحيحا إلى سؤالك الأصلي لا يمكنك التفاعل مع ClientScriptBlocks جزء من النصوص في أي وقت خلال أي طفل التحكم تقديم تسلسل نظرا لأنها قد تم بالفعل إخراج دفق استجابة.لك يمكن إضافة النصوص إلى هذه الكتلة خلال تقديم تسلسل إذا كنت في صفحة تقديم طريقة قبل استدعاء القاعدة.تجعل تيم يذكر, ولكن هذا لا يعمل في الطفل رقابة من أي نوع.

إذا كان تقديم تسلسل كل ما عليك أن تعمل مع (هذا هو الوضع أنا في) ثم يمكنك استخدام ClientScript.RegisterStartupScript خلال التحكم الخاصة بك تقديم ، RenderClientStartupScripts يسمى خلال الصفحة.EndFormRender الذي يحدث بعد عناصر التحكم الخاصة بك قال لتقديم ، كما ترى في الكود أعلاه.

ومنطقيا، يحتاج النصي بدء التشغيل التي ستقدم وكذلك المسجلة على الصفحة، وبالتالي فإن الحدث Page_PreRender ويبدو أن رهان جيد. بعد أن HTML وسيناريو للصفحة هو "مؤمن".

وحتى على الصفحة الرئيسية، يمكنك أن نسميها خلال عرض مسبق. ويسمى تجعل وظيفة كل عنصر تحكم بعد عرض مسبق للصفحة الرئيسية، وبالتالي فإن وظيفة التقديم سيكون مكان آمن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top