ASP.net ViewState - حتى عند تعطيله، توجد بعض حالات العرض.لماذا؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

حتى عندما تكون الخاصية EnableViewState معطلة في الصفحة، ما زلت أرى بعض حالات العرض الموجودة على الصفحة:

"<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="VkBAB3n5LZYtY+nTzk1vEu1P/6QLf4qzFIKzpFRJe3DMf8UseUA/1RsO409HJX4QhkROSP0umoJvatjK/q+jXA==" />"

سؤالي هو لماذا؟

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

المحلول

وهذا يمكن أن يكون الضوابط التي تستخدم ControlState. فإن أي عنصر التحكم الذي يوجد دولة السيطرة على تجاهل إعدادات حالة العرض الخاص بك.

نصائح أخرى

إنها حالة السيطرة.

إذا كنت تريد حقًا التخلص من حالة العرض وحالة التحكم، فيمكنك استخدام هذا الرمز في الكود الخلفي للصفحة، أو في أي فئة يشتق منها الكود الخلفي

class MyPage : Page {
    private class DummyPageStatePersister : PageStatePersister {
        public DummyPageStatePersister(Page p) : base(p) {}
        public override void Load() {}
        public override void Save() {}
    }
    private DummyPageStatePersister _PageStatePersister;
    protected override PageStatePersister PageStatePersister {
        get {
            if (_PageStatePersister == null)
                _PageStatePersister = new DummyPageStatePersister(this);
            return _PageStatePersister;
        }
    }

    // other stuff comes here
}

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

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

هذه المقالة قديمة بعض الشيء ولكن حسب فهمي فإن معظم النقاط لا تزال صالحة:

  1. يجب أن يكون لديك علامة نموذج من جانب الخادم () في صفحة ASPX الخاصة بك إذا كنت تريد استخدام ViewState.مطلوب حقل نموذج حتى يتمكن الحقل المخفي الذي يحتوي على معلومات ViewState من النشر مرة أخرى إلى الخادم.ويجب أن يكون نموذجًا من جانب الخادم حتى يتمكن إطار عمل صفحة ASP.NET من إضافة الحقل المخفي عند تنفيذ الصفحة على الخادم.
  2. تقوم الصفحة نفسها بحفظ 20 بايت أو نحو ذلك من المعلومات في ViewState، والتي تستخدمها لتوزيع بيانات PostBack وقيم ViewState على عناصر التحكم الصحيحة عند إعادة النشر.لذلك، حتى إذا تم تعطيل ViewState للصفحة أو التطبيق، فقد ترى بعض وحدات البايت المتبقية في ViewState.
  3. في الحالات التي لا يتم فيها إعادة نشر الصفحة، يمكنك إزالة ViewState من الصفحة عن طريق حذف العلامة من جانب الخادم.

http://msdn.microsoft.com/en-us/library/ms972427.aspx

وهذا هو مقالة رائعة تماما على حالة العرض إذا كنت في وضع ASP.NET قراءتها!

ASP.NET حالة العرض مساعد هو أيضا أداة لطيفة لرؤية ما يحدث على في حالة العرض الخاص بك

وControlstate يمكن أن تكون الأسباب. الدولة السيطرة لا يمكن تعطيل. في ASP.NET 2.0 هناك تمييز بين البيانات اللازمة لجعل عمل التحكم (controlstate)، وغيرها من البيانات (حالة العرض)

ونعم بعض الضوابط لا تعمل دون controlstate. إذا كنت تريد أن تعرف أي واحد يسبب ذلك أو ما يحتوي على حالة العرض تحقق من حالة العرض المشاهد

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

ولكن الضوابط مثل ملصق التي لا تنفذ IPostBackEventHandler لن تحصل على أي معلومات حالة من البيانات التي تم نشرها، وبالتالي تعتمد بشكل كامل على حالة العرض للحفاظ على الحالة.

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