با سلام.
روش دوم استفاده از Context صفحه است. شما ممکنه بخوايد در طول Proccess يک صفحه، از ابتدا تا انتهای آن، از يک داده يا Object خاص استفاده کنيد و آن را در تمام کلاسهای استفاده شده در صفحه داشته باشيد.
در Asp کلاسيک اين کار به راحتی قابل انجام بود به اين صورت که شما Object مورد نظرتون رو در بالای کد های صفحه تعريف می کرديد و در تمام طول کد نويسی آن صفحه که شامل یک سری Include بود، به آن Object يا Variable دسترسی داشتيد.
در Asp.net اين امر به وسيله Context قابل پياده سازی است. بدين معنی که شما به چيزی که داخل Context قرار داره در تمام UserControl ها و کلاسهای استفاده شده در يک صفحه دسترسی داريد.
خوب روش کار هم دقيقا همونطوره که بالا گفتم. Context مثل Session و ViewState است و شما می تونيد هر چيزي رو داخلش قرار بديد.
به عنوان مثال من توی پروژه های خودم يک کلاس دارم که تمام Objectهای مورد نياز رو داخلش صدا می کنم. اينجوری اگر Object ای مثل Language رو بخواهيد در صفحه و تمام UserControl های استفاده شده در آن، استفاده کنيد فقط يک شی از آن خواهيد داشت نه به تعداد serControl های موجود.
کد:
[LEFT][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]class [/COLOR][/SIZE][SIZE=2][COLOR=#2b91af]AllObjects[/COLOR][/SIZE]
[SIZE=2]{[/SIZE]
[SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#2b91af]LanguageClass[/COLOR][/SIZE][SIZE=2] Lang[/SIZE]
[SIZE=2]{[/SIZE]
[SIZE=2][COLOR=#0000ff]get[/COLOR][/SIZE]
[SIZE=2]{[/SIZE]
[SIZE=2][COLOR=#2b91af]LanguageClass[/COLOR][/SIZE][SIZE=2] Lang;[/SIZE]
[SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][SIZE=2] ([/SIZE][SIZE=2][COLOR=#2b91af]HttpContext[/COLOR][/SIZE][SIZE=2].Current.Items[[/SIZE][SIZE=2][COLOR=#a31515]"Lang"[/COLOR][/SIZE][SIZE=2]] == [/SIZE][SIZE=2][COLOR=#0000ff]null[/COLOR][/SIZE][SIZE=2])[/SIZE]
[SIZE=2]{[/SIZE]
[SIZE=2]Lang = [/SIZE][SIZE=2][COLOR=#0000ff]new [/COLOR][/SIZE][SIZE=2][COLOR=#2b91af]LanguageClass[/COLOR][/SIZE][SIZE=2]();[/SIZE]
[SIZE=2][COLOR=#2b91af]HttpContext[/COLOR][/SIZE][SIZE=2].Current.Items[[/SIZE][SIZE=2][COLOR=#a31515]"Lang"[/COLOR][/SIZE][SIZE=2]] = Lang;[/SIZE]
[SIZE=2]}[/SIZE]
[SIZE=2][COLOR=#0000ff]else[/COLOR][/SIZE]
[SIZE=2]{[/SIZE]
[SIZE=2]Lang = ([/SIZE][SIZE=2][COLOR=#2b91af]LanguageClass[/COLOR][/SIZE][SIZE=2])[/SIZE][SIZE=2][COLOR=#2b91af]HttpContext[/COLOR][/SIZE][SIZE=2].Current.Items[[/SIZE][SIZE=2][COLOR=#a31515]"Lang"[/COLOR][/SIZE][SIZE=2]];[/SIZE]
[SIZE=2]}[/SIZE]
[SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][SIZE=2] Lang;[/SIZE]
[SIZE=2]}[/SIZE]
[SIZE=2]}[/SIZE]
[SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#2b91af]SiteAuthentication[/COLOR][/SIZE][SIZE=2] SiteUser[/SIZE]
[SIZE=2]{[/SIZE]
[SIZE=2][COLOR=#0000ff]get[/COLOR][/SIZE]
[SIZE=2]{[/SIZE]
[SIZE=2][COLOR=#2b91af]SiteAuthentication[/COLOR][/SIZE][SIZE=2] SUser;[/SIZE]
[SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][SIZE=2] ([/SIZE][SIZE=2][COLOR=#2b91af]HttpContext[/COLOR][/SIZE][SIZE=2].Current.Items[[/SIZE][SIZE=2][COLOR=#a31515]"SiteUser"[/COLOR][/SIZE][SIZE=2]] == [/SIZE][SIZE=2][COLOR=#0000ff]null[/COLOR][/SIZE][SIZE=2])[/SIZE]
[SIZE=2]{[/SIZE]
[SIZE=2]SUser = [/SIZE][SIZE=2][COLOR=#0000ff]new [/COLOR][/SIZE][SIZE=2][COLOR=#2b91af]SiteAuthentication[/COLOR][/SIZE][SIZE=2]();[/SIZE]
[SIZE=2][COLOR=#2b91af]HttpContext[/COLOR][/SIZE][SIZE=2].Current.Items[[/SIZE][SIZE=2][COLOR=#a31515]"SiteUser"[/COLOR][/SIZE][SIZE=2]] = SUser;[/SIZE]
[SIZE=2]}[/SIZE]
[SIZE=2][COLOR=#0000ff]else[/COLOR][/SIZE]
[SIZE=2]{[/SIZE]
[SIZE=2]SUser = ([/SIZE][SIZE=2][COLOR=#2b91af]SiteAuthentication[/COLOR][/SIZE][SIZE=2])[/SIZE][SIZE=2][COLOR=#2b91af]HttpContext[/COLOR][/SIZE][SIZE=2].Current.Items[[/SIZE][SIZE=2][COLOR=#a31515]"SiteUser"[/COLOR][/SIZE][SIZE=2]];[/SIZE]
[SIZE=2]}[/SIZE]
[SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][SIZE=2] SUser;[/SIZE]
[SIZE=2]}[/SIZE]
[SIZE=2]}[/SIZE]
[SIZE=2]}[/SIZE][/LEFT]
در مورد خواندن در صفحات ديگر هم بايد بگم Context فقط در صفحه جاری اعتبار داره و هر صفحه برای خودش Context جدا گانه ای داره.
اما چون با دستور Server.Transfer عملا صفحه مورد نظر داخل صفحه فعلی فرا خوانی می شه، شما فقط در صورتی که از Server.Transfer برای جابجایی بین صفحاتتون استفاده کنيد می تونيد از Context صفحه قبل بهره بگيريد.