يتم مسح Asp.net BasePage خصائص باستخدام حالة العرض على إعادة النشر

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

سؤال

وهنا هي أساسيات بلدي الإعداد:

ولدي فئة BasePage أن يرث من System.Web.UI.Page. لديها BasePage خاصيتين نفذت تلك التي لها الحصول على / مجموعة من يفعل ذلك اثنين من عناصر مختلفة في جمع حالة العرض (على سبيل المثال this.ViewState [ "السنة"] من BasePage).

ولدي فئة أخرى أن ثم يرث من BasePage، يتيح نسميها SpecificBasePage.

وأخيرا، لدي صفحة aspx يرث SpecificBasePage.

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

عند الصفحة تم نشرها مرة أخرى ولكن خلال الحدث Page_Load وغيرها من معالجات الأحداث (متى يجب أن يتم تحميل حالة العرض)، وكلاهما خصائص تعود فارغة. يظهر التفتيش this.ViewState.Count أن هناك الصفر الكائنات في المجموعة.

ويمكن لأي شخص أن يفكر في شيء أنا يمكن أن تقوم به في مكان ما من شأنها أن تؤثر على حالة العرض ويسبب هذا السلوك؟

و- إضافة لقد معزولة إلى جزء من قانون بلدي. في الحمل الأولي، أعطي قيم الخصائص حالة العرض في OnInit، لقد وجدت أنني عندما نقل هذا إلى ONLOAD، والقيم لا تزال قائمة في فترة ما بعد الظهر. أعتقد على الرغم من أن القيم حالة العرض واضاف استمرت طوال دورة حياة الصفحة الأولى، والتخلي عنها في فترة ما بعد الظهر؟

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

المحلول

وربما يكون صفحات EnableViewState = كاذبة على ASPX

وأيضا قد يتم تعطيل على الملف web.config للتطبيق، أو حتى للكمبيوتر الكلي على العنصر.

على تحديث 1: في دورة asp.net، يتم تحميل حالة العرض بعد التهيئة، وقبل تحميل <لأ href = "http://msdn.microsoft.com/en-us/library/ ms972976.aspx # "يختلط =" نوفولو noreferrer "> مزيد من المعلومات . نرى ذلك مثل يعتبر أي شيء على الحرف الأول جزء من إعلان الصفحة. في وقت لاحق asp.net سيتم تحميل حالة العرض، وبعد ذلك يبدأ تتبع التغييرات في حالة العرض. ومن بعد هذا سوف أن asp.net يرى أي فرق بين المعلومات الأولية عن حالة العرض والمعلومات التي تم تغييرها، وبالتالي نقله إلى تحميل يتجنب المشكلة (كما الحالة الأولية ليست هناك، والدولة الجديدة مهما كنت وضعت على حالة العرض) . من الرابط أعلاه:

<اقتباس فقرة>   

و"والسبب هو لأن الطبقة StateBag   يقيس فقط تغييرات على أعضائها   بعد TrackViewState لها () الأسلوب له   تم الاستشهاد. وهذا هو، إذا كان لديك   StateBag، أي وجميع الإضافات أو   التعديلات التي يتم إجراؤها قبل   يتم TrackViewState () لن يكون   حفظ عندما SaveViewState () طريقة   يتم استدعاء. وTrackViewState ()   يتم استدعاء أسلوب في نهاية   مرحلة التهيئة، والذي يحدث   بعد مرحلة مثيل.   لذلك، الخاصية الأولى   تعيينات في التجسيد   المرحلة في حين كتب إلى حالة العرض   في مجموعة خصائص "يمكنهم الدخول-ل   لا استمرت خلال   SaveViewState () استدعاء الأسلوب في   حفظ مرحلة حالة العرض، لأن   له TrackViewState طريقة () بعد أن تكون   الاحتجاج ".

نصائح أخرى

إليك إجابة ممتازة مستخدم آخر نشر حول <لأ href = "https://stackoverflow.com/questions/597042/what-is-the-page-lifecycle-of-an-asp-net-webform/597068# 597068 "> ASP.NET دورة حياة الصفحة أنها تستحق نظرة لقضايا حالة العرض.

وبالإضافة إلى ذلك، إلقاء نظرة على " فهم حقا حالة العرض "

وكما ذكرت في الجزء الأول وأضاف في وقت لاحق، على ما يبدو لا يمكنك تعيين أي شيء في حالة العرض قبل تحميل الصفحة، على الرغم من Asp.net لا رمي خطأ وسيكون موجودا في حالة العرض في جميع أنحاء الأولي الصفحة دورة الحياة، وأنه لن يستمر في دورة حياة ما بعد الظهر لاحقة ل.

ونلقي نظرة على أين أنت الإعداد الذي قيم حالة العرض. ربما wireup الحدث معالج onunload وتفقد الكائن حالة العرض فقط للتأكد من هي في الواقع الحصول على تعيين القيم.

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