PDA

View Full Version : سوال: چک کردن Session



jeson_park
چهارشنبه 29 خرداد 1392, 22:33 عصر
با سلام
یه صفحه جستجو داریم که بعد از جستجو و ریختن اطلاعات پیدا شده درون SqlDataReader ، اون رو توی session قرار می دم و بعد به صفحه result.aspx می رم


Session["dr"] = dr;
Response.Redirect("~/result.aspx");


در صفحه result.aspx چک میکنم اگر session برابر null هست یه پیغام نشون بده و همه کنترل های صفحه مخفی شن


if (Session["dr"] == null)
{
foreach (var item in Page.Controls)
{
if (item is Label)
{
((Label)item).Text = "داده ای برای نمایش وجود ندارد";
}
}
Response.Write("Not found!");

System.Threading.Thread.Sleep(6000);
Response.Redirect("~/Search.aspx");

}


اما اصلاً این قسمت اجرا نمیشه
مثلاً وقتی مستقیم وارد صفحه Result.aspx می شم این تیکه کد اجرا نمیشه و باز همه کنترل ها نشون داده میشن و پیغام Not found هم نشون داده نیمشه
مشکل از چیه؟؟

forestasphalt
چهارشنبه 29 خرداد 1392, 23:56 عصر
چون سشن برای مدت معینی باقی میمونه ممکنه از دفعه قبلی اطلاعات رو در خودش داشته باشه
یه break point بذار ببین سشن مقدار میگیره یا نه؟

jeson_park
پنج شنبه 30 خرداد 1392, 11:15 صبح
اصلاً بحث سر اینا نیست
من میگم توی search.aspx sنشست ایجاد میشه بعد ریدارکت میشه توی Result.aspx
مگه شهاب سنگه که توی 2-3 ثانیه محو شه؟؟؟!؟:لبخند:
من فقط دنبال یه مکانیزم هستم که اگه کسی مستقیم خواست وارد این صفحه شه این label ها رو نشون نده
خب استدلالم این بود که وقتی کسی به جای ریدارکت شدن از search مستقیم http://site.com/result.aspx رو وارد کنه session که خالی هست پس شرط درسته و کل کنترل ها رو invisable کنه یا به صفحه دیگه redirect می شه
پیوست : یکی نیست به من بگه "قبل کد نویسی می مردی اگه یه کتاب رو کامل می خوندی؟؟"

Mag-Mag
پنج شنبه 30 خرداد 1392, 20:17 عصر
شما می تونی از دستور

Request.UrlReferrer.AbsolutePath;
مقدار این دستور رو بریز توی یک رشته بد چاپش کن روی صفحه(توی صفحه result)زمانی که از صفحه search بیای مقدارش فک کنم میشه search.aspx/
اونوقت میتونی شرط بذاری که اگر مقدار Request.UrlReferrer.AbsolutePath برابر Search.aspx بود یعنی حتما طرف از صفحه search اومده

به همین راحتی