سؤال

ويأتي من خلفية PHP أنا أحب استخدام عناوين المواقع نظيفة لانتزاع البيانات من خدمة واحدة إلى أخرى.

ولكن، في بعض مشاريع ASP.NET بلدي أحصل على المعلمة حالة العرض الرهيبة في عناوين URL بلدي.

هل هناك طريقة لإيقاف هذا على الصعيد العالمي؟

وماذا تؤثر وذلك على بلدي التطبيق ASP.NET؟

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

المحلول

ويمكنك إيقاف حالة العرض للموقع بأكمله مثل هذا:

    <system.web>
<pages enableViewState="false" />

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

وتحقق هذا الرابط لمزيد من المعلومات حول كيفية حالة العرض يناسب في دورة الحياة asp.net: <لأ href = "http://msdn.microsoft.com/en-us/library/ms972976.aspx" يختلط = " noreferrer "> http://msdn.microsoft.com/en-us/library/ms972976.aspx .

نصائح أخرى

وكان لي مماثلة السؤال عند الكتابة و التقييم المقتفي .

وأنا لا أعرف كيف نفعل ذلك البعض على الصعيد العالمي من أن مجرد أبدا استخدام نموذج مع مجموعة runat="server"، وهي تفعل أكثر مع الانضباط من الإعداد. على وجه الخصوص، إذا كنت قد runat="server" تعيين على شكل أعتقد أنك سوف تحصل دائما على معلمة حالة العرض، حتى لو كنت إيقاف تشغيله في كل مكان لذلك كنت لا تحصل على أي القيم . وكان هذا واقع خبرتي، على أي حال.

ومن الواضح أن هذا يحد لك إلى حد ما، ولكني وجدت أن استخدام عناصر تحكم الملقم HTML (بدلا من الضوابط ASP.NET) لقطع مناسبة من ASP.NET يمكن أن تجعل الحياة أسهل كثيرا لفهم.

وإيقاف حالة العرض بشكل افتراضي باستخدام عنصر <page> في الملف web.config. باستخدام EnableViewState="true" في التوجيه @Page لن تعمل بمجرد تعطيل حالة العرض في الملف web.config. إذا قررت فيما بعد أن كنت في حاجة إلى حالة العرض لصفحة معينة، يمكنك تشغيله مرة أخرى لمجرد أن الصفحة باستخدام عنصر <location>.

<configuration>
  <system.web>
    <pages enableViewState="false" />
  </system.web>

  <location path="MyFolder/MyPage.aspx">
    <system.web>
      <pages enableViewState="true" />
    </system.web>
  </location>
  <location path="Site.master">
    <system.web>
      <pages enableViewState="true" />
    </system.web>
  </location>
</configuration>

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

وهذا إضافة إلى ملف web.config:

<Pages enableViewState="false"/> 

هل يمكن أن التحول إلى ASP.Net MVC. من ما أفهم أنه لا يستخدم في حالة العرض.

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

وأحد الأمثلة الجيدة هو حدث SelectedIndexChanged على القائمة المنسدلة (واحد ليس لديها autopostback مجموعة). يعمل هذا لأن حالة العرض يحتفظ المؤشر السابق، والوظائف شكل المؤشر الحالي، والسيطرة يقارن اثنين من أجل أن نعرف أن الفهرس المحدد قد تغير. ذلك عندما يرفع الحدث SelectedIndexChanged. دون حالة العرض، وهذا الحدث ليس اطلاق النار. الشيء نفسه بالنسبة لأحداث TextChanged، وما إلى ذلك.

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

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