PDA

View Full Version : متغیر استاتیک در asp.net



davood_mir
یک شنبه 08 شهریور 1388, 12:32 عصر
سلام

من در یک صفحه asp.net در ابتدا یک متغیر static تعریف کرده ام تا مقدار آن هنگام جابجایی میان رویدادهای مختلف از بین نره و بتونم با مقادیر آن کار کنم. اما مشکلی که هست اینکه وقتی یک کاربر دیگه همزمان داره از سایت استفاده می کنه این متغیر برای اون هم مقدار گرفته .
حالا من باید چگونه متغیری داشته باشم که هم مقدار آن در رویدادهای یک صفحه تغییر نکنه و هم برای کاربران مختلف مقادیرش باتوجه به عملیات همون کاربر تغییر کنه؟

ممنون

آریوس1985
یک شنبه 08 شهریور 1388, 13:25 عصر
مطمئن نیستم اما فکر می کنم می تونید از Session ها استفاده کنید

davood_mir
یک شنبه 08 شهریور 1388, 13:37 عصر
سعی کردم اما نشد. شاید هم من نتونستم اگه میشه راهنمایی کنید

davood_mir
یک شنبه 08 شهریور 1388, 20:42 عصر
از Session برای انتقال مقادیر بین صفحات استفاده می شه. اما من می خوام در یک صفحه مقدار نتغیر بین رویدادها از بین نره

Milad Mohseny
یک شنبه 08 شهریور 1388, 20:50 عصر
اما من می خوام در یک صفحه مقدار نتغیر بین رویدادها از بین نره
میتونی مقدار مورد نظر رو در یک HidenField قرار بدی.

davood_mir
یک شنبه 08 شهریور 1388, 22:19 عصر
با تشکر
متغیر من یک آرایه از یک کلاس است آیا باز هم امکانش هست.اگه میشه توضیح بیشتری بدید.

مهدی کرامتی
یک شنبه 08 شهریور 1388, 23:08 عصر
شما می توانید شیء فوق را در Session یا ViewState قرار دهید. مثلا:
Session["MyArray"] = myArray;
یا
ViewState["MyArray"] = myArray;
و برای خواندن آن:
myArray = (myArrayDataType)Session["MyArray"] ;

سعی کنید اشیاء فوق خیلی بزرگ نباشند، وگرنه در مورد اول حافظه سرور و در مورد دوم سایز صفحه خروجی بسیار بزرگ خواهد شد.

mir555
دوشنبه 09 شهریور 1388, 20:05 عصر
با اجازه اساتید
وقتی ما در یک کلاس یک متغییر استاتیک تعریف کنیم اون متغییر بین تمام نمونه های اون کلاس مشترک میشه یعنی همون مشکلی که شما برخورد کردید معمولا از این نوع متغییر برای انتقال مقدار بین تمام کاربرای سایت استفاده می شه بهترین چیز برای کار شما session هستش

iman_ad
سه شنبه 10 شهریور 1388, 01:10 صبح
آیا می شه از viewstate در کد یک کلاس خارجی که نمونه ای از اون در کد صفحه ایجاد شده استفاده کرد؟

مهدی کرامتی
سه شنبه 10 شهریور 1388, 01:42 صبح
خیر، شیء ViewState به ازای هر صفحه اختصاصی محسوب میشه و مثل Session که در کلاس های خارج از کلاس صفحه بصورت HttpContext.Current.Session قابل دسترسی هست در دسترس نیست.

aynehband
سه شنبه 10 شهریور 1388, 01:57 صبح
راه اصلی session است ، اما اگر خیلی بزرگ باشه، من از پایگاه داده استفاده می کنم، می تونی یک جدول درست کنی که با sessionID و متغیرت کارکنه . در فایل global.asax هم هنگام پایان session رکوردش را پاک کن.