PDA

View Full Version : سوال: ساخت يک متغير با لايف تايم (LifeTime) همانند viewState



yasser_beiraghi
شنبه 05 بهمن 1392, 22:53 عصر
سلام.
داشتم پستهاي انتقال اطلاعات بين صفحات رو مي خوندم فهميدم viewstate ها در سمت client هستند و پهناي باند مي گيرن. من هم به خاطر اينکه يه متغير در طول http request هاي مختلف يک صفحه زنده باشه از viewState استفاده کردم.
به خاطر دو تا مزيت خوب و مهم زير از session استفاده نکردم.
1. اگه يه page توسط يک کاربر دو تا يا بيشتر باز بشه متغير viewState براي هر صفحه جداست و اگه تو يه صفحه متغير تغيير کنه تو اون يکي بهم نمي خوره.
2. متغيرهاي viewstate تا موقعي که صفحه باز باشه و post back هاي مختلف داشته باشه lifeTime داره و اين خيلي خوبه.
ولي يه مشکل هم داره که حتما بايد متغير ها قابليت serialize داشته باشن.
حالا راهي وجود داره که يه متغير تعريف کنيم که توي هر صفحه به ازا postback هاي مختلف از بين نره و فقط تو همون صفحه باز شده ديده بشه و اگه دوبار باز شده بود تغيير تو يکي تو بقيه تاثير نذاره؟؟؟؟
يا اگه من کلا اشتب مي کنم لطفا يه راهنمايي بکنيد.

mamad174
یک شنبه 06 بهمن 1392, 11:33 صبح
اگر می خواید تو یک صفحه با postback های متوالی اطلاعات تغییر نکنه باید از کد زیر استفاده کنید البته اگر منظور رو درست متوجه شده باشم



if(!postback)
}
اینجا کدتون رو قرار بدید
{

yasser_beiraghi
یک شنبه 06 بهمن 1392, 14:01 عصر
ممد جان منظورم اصلا اين نيست

ahmad156
یک شنبه 06 بهمن 1392, 22:16 عصر
هدفتون چی هست از این کار؟

yasser_beiraghi
دوشنبه 07 بهمن 1392, 10:48 صبح
من تمامي تغييرات رو اول توي dataset انجام مي دم بعد از اتمام تمامي تغييرات روي ديتابيس مي ريزم.مثلا براي تغيير يا اضافه کردن يک رکورد کلي جدول ديگه هم بايد تغيير کنه يا بايد همه تغييرات Reject بشه براي همين بايد dataset توي postback هاي مختلف reset نشه. الان کل dataset رو با Viewstate تعريف کردم ولي بعد از خوندن پستهاي همين سايت خودمون فهميدم پهناي باند ميگيره.

ahmad156
دوشنبه 07 بهمن 1392, 17:14 عصر
میتونین از Session استفاده کنین ولی در نظر بگیرین که سرورتون رو سنگین میکنه

mRizvandi
دوشنبه 07 بهمن 1392, 17:45 عصر
شرایط سایت و صفحه رو نمیدونم، ولی اینطوری که متوجه شدم، با این روش میشه اطلاعات دیتابیس شما رو با تغییر ViewState تغییر داد. پیشنهاد میشه که حتما اون رو تغییر بدید.
استفاده از ویواستیت برای نگه داری اطلاعات حساس و ثبت در دیتابیس پیشنهاد نمیشه.
استفاده از Session بیشتر کمک می کنه. اگر نیاز دارید که مقادیر صفحات در یک Session مجزا ثبت بشه می تونید یک فیلد ID مجزا هم اضافه کنید تا هر بار به ازای هر صفحه که در حال رفرش هست، اطلاعات Session مجزایی رو تغییر بدید.

yasser_beiraghi
دوشنبه 07 بهمن 1392, 22:49 عصر
جناب mRizvandi (http://barnamenevis.org/member.php?12033-mRizvandi) ممنون از توضيحتون.به همين نتيجه رسيدم که از session استفاده کنم. کمي تکميلترش مي کنم و بيشتر از کمک شما استفاده مي کنم.