PDA

View Full Version : برداشتن VIEWSTATE از صفحات



m110_110
چهارشنبه 15 مهر 1388, 08:43 صبح
سلام
مي بخشيد اما مثل اينکه جستجو در اين مورد چندان نتيجه اي نداشت
VIEWSTATE رو من در تمام صفحات و usercontrol ها false کردم
همه چيز هم الحمدالله درست کار مي کنه اما در بعضي صفحات هنوز وقتي view source مي گيرم هنوز هست چه کار کنم که اين داخل سورسم نباشه و يا کمتر بشه
تازه من تمام کنترل هام رو اين خاصيت براشون false تعريف شده است
دليل اينکه نمي خوام از اون استفاده کنم اينه که لودم رو سنگين مي کنه و من يک جاييم که خيلي رو اين حساس اند و قبل از اين کار با php مقايسه مي کردند که حالا که دارم با asp مي نويسم به کارم خدشه وارد مي کنند و مي خواهند هيچ کد اضافي درون صفحه نباشه

alireza_s_84
چهارشنبه 15 مهر 1388, 12:28 عصر
سلام
مي بخشيد اما مثل اينکه جستجو در اين مورد چندان نتيجه اي نداشت
VIEWSTATE رو من در تمام صفحات و usercontrol ها false کردم
همه چيز هم الحمدالله درست کار مي کنه اما در بعضي صفحات هنوز وقتي view source مي گيرم هنوز هست چه کار کنم که اين داخل سورسم نباشه و يا کمتر بشه
تازه من تمام کنترل هام رو اين خاصيت براشون false تعريف شده است
دليل اينکه نمي خوام از اون استفاده کنم اينه که لودم رو سنگين مي کنه و من يک جاييم که خيلي رو اين حساس اند و قبل از اين کار با php مقايسه مي کردند که حالا که دارم با asp مي نويسم به کارم خدشه وارد مي کنند و مي خواهند هيچ کد اضافي درون صفحه نباشه

سلام دوست عزیز شما برای غیر فعال کردن ViewState نیازی نیست که تک تک کنترلها رو غیر فعال کنید توی WebConfig در قسمت Page میتونید ViewState رو غیر فعال کنید و مطمئن باشید که برای تمامی صفحات و کنترلها اعمال خواهد شد.


<pages enableViewState="false" styleSheetTheme="Royale">

البته توجه داشته باشید که با غیر فعال کردن ViewState کنترل HiddenField که برای اینکار در نظر گرفته شده از صفحه پاک نمیشه اما دیگه مقادیر رو در خودش نگه نمیداره.
برای کنترل اینکه هر کنترل چه مقدار ViewState رو به خودش اختصاص داده میتونید Trace رو فعال کنید و در انتهای صفحه مقداری رو که هر کنترل در ViewState به خودش اختصاص داده مشاهده کنید در این حالت تمامی مقادیر باید 0 باشید
موفق باشید

Chabok
چهارشنبه 15 مهر 1388, 12:30 عصر
با سلام

اگر شما در یک صفحه ViewState را غیر فعال کنید در تمامی عناصر آن صفحه نیز غیر فعال می شود .
یعنی در همه حالات در صورتی که ViewState شی پدر غیر فعال باشه تمامی عناصر داخلی آن فاقد ViewState خواهند بود .

EnableViewState property on any container will override the behavior of all controls within that containter.

برای راحتی میتوانید در web.config آن را غیر فعال کنید .


<Pages EnableViewState="false" . />

ولی اون مقدار کوچیکی که در نهایت باز هم وجود داره رو نمیدونم .

برای مثال در یک صفحه ای که ViewState غیر فعال است هنوز مقدار زیر وجود داره :

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJMTM1MzI4OTU5ZGRHf51qCYumzFCWQ5XzSsSrfxIWpQ= =" />

موفق باشید .

Behrouz_Rad
چهارشنبه 15 مهر 1388, 14:56 عصر
در ASP.NET مفهومی با عنوان Control State وجود داره که باعث میشه حتی در صورتی که ViewState رو هم غیر فعال کنید، کنترل مقدار خودش رو در ViewState ذخیره کنه. این حالت در مواقعی هست که کارکرد صحیح کنترل، وابستگی زیادی به ViewState داشته باشه.
کنترل ها روال SaveControlState و LoadControlState رو بدین منظور override می کنند. مقدار مورد نظر همانند ViewState در فیلد مخفی VIEWSTATE__ قرار می گیره.

موفق باشید.

m_amin_t
سه شنبه 14 اردیبهشت 1389, 12:48 عصر
با سلام

اگر شما در یک صفحه ViewState را غیر فعال کنید در تمامی عناصر آن صفحه نیز غیر فعال می شود .
یعنی در همه حالات در صورتی که ViewState شی پدر غیر فعال باشه تمامی عناصر داخلی آن فاقد ViewState خواهند بود .

EnableViewState property on any container will override the behavior of all controls within that containter.

برای راحتی میتوانید در web.config آن را غیر فعال کنید .


<Pages EnableViewState="false" . />ولی اون مقدار کوچیکی که در نهایت باز هم وجود داره رو نمیدونم .

برای مثال در یک صفحه ای که ViewState غیر فعال است هنوز مقدار زیر وجود داره :

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJMTM1MzI4OTU5ZGRHf51qCYumzFCWQ5XzSsSrfxIWpQ= =" />موفق باشید .

حالا اگه بخوایم فقط یک صفحه (یا در حالت کلی تعداد محدودی از صفحاتمون رو ViewState رو غیرفعال کنیم چطور؟؟

alireza_s_84
سه شنبه 14 اردیبهشت 1389, 13:07 عصر
بالای هر صفحه
<Pages EnableViewState="false" . />

m_amin_t
سه شنبه 14 اردیبهشت 1389, 13:18 عصر
بالای هر صفحه
<Pages EnableViewState="false" . />

منظورتون از بالای هر صفحه چیه؟ من بالای صفحه م این کد رو گذاشتم ولی فرقی نکرد.

alireza_s_84
سه شنبه 14 اردیبهشت 1389, 13:50 عصر
منظورتون از بالای هر صفحه چیه؟ من بالای صفحه م این کد رو گذاشتم ولی فرقی نکرد.
چی فرقی نکرد؟؟؟

m_amin_t
سه شنبه 14 اردیبهشت 1389, 14:00 عصر
یعنی باز هم viewstate داشتم

Nightbat
سه شنبه 14 اردیبهشت 1389, 14:31 عصر
یعنی باز هم viewstate داشتم

آقای راد که دلیلش رو گفت.

m_amin_t
سه شنبه 14 اردیبهشت 1389, 14:43 عصر
ممنون جواب رو پیدا کردم:

<%@ Page EnableViewState="false" %>

mohsen.nsb44
پنج شنبه 19 آبان 1390, 18:12 عصر
ایا غیر فعال کردن
VIEWSTATE در وب کانفیگ

مشکل امنیتی به وجود نمی اورد؟

khormaloo
شنبه 21 آبان 1390, 11:46 صبح
قسمت page در webconfig کجاست؟؟؟؟؟

rahmatr
شنبه 21 آبان 1390, 18:58 عصر
اگر در صفحه هیچ کنترلی ندارید که Postbak داشته باشد (مثل button) و فقط برای نمایش اطلاعات از صفحه استفاده میکنید، متد SavePageStateToPersistenceMedium صفحه را override کنید :


protected override void SavePageStateToPersistenceMedium(object state)
{
if (EnableViewState)
{
base.SavePageStateToPersistenceMedium(state);
}
}


در این صورت وقتی EnableViewState برابر False باشد، هیچ مقداری در Viewstate ذخیره نخواهد شد :



<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="" />