PDA

View Full Version : انجام کاری در هنگام بسته شدن صفحه ؟؟



Modifier
پنج شنبه 27 دی 1386, 01:14 صبح
باسلام

چگونه میشود وقتی صفحه وبی رو میبندیم کاری انجام دهیم - طرف سرور - با سی شارپ

مرسی

raravaice
پنج شنبه 27 دی 1386, 10:43 صبح
سلام
با #C مستقیم نمیشه مگر اینکه تو Javascript برای رویداد Unload صفحت تابع تعریف کنی که در هنگام بسته شدن با Ajax یه کد رو بفرسته به سرور.
البته این یه فرضیه است و تا حالا تست نکردمش چون لااقل برای من مورد استفاده نداشته حالا نمیدونم شما چیکار میخوای بکنی.

موفق باشی

Modifier
پنج شنبه 27 دی 1386, 11:41 صبح
اگه بخوام با unload کار کنم بدون ajax هم میشه --- اما کاری که من میخوام بکنم چند مرحله ای است و اگر کاربر از میون راه منصرف شد و پنجره رو بست session هاش از بین بره
با unload نمیشه چون وقتی به یه مرحله جلوتر میری این event بکار میافته.

Behrouz_Rad
پنج شنبه 27 دی 1386, 14:09 عصر
بدون AJAX نمی تونی.
از Page Methods که در AJAX 1.0 Extensions معرفی شد استفاده کن و روالی بنویس که Session جاری رو از بین ببره.


[WebMethod]
public static void ByeByeSession()
{
HttpContext.Current.Session.Abandon();
}

روال فوق رو در رویداد onunload صفحه فراخوانی کن.


function doActionOnClose()
{
PageMethods.ByeByeSession();
}



<body onunload="doActionOnClose();">

وقتی متد Abandon کلاس Session فراخوانی میشه، رویداد Session_End اتفاق می افته که در اون می تونه هر کاری اضافه ی دیگه ای که دوست داشتی انجام بدی.


با unload نمیشه چون وقتی به یه مرحله جلوتر میری این event بکار میافته.

برای حل این مشکل میشه ترفندی زد.
در روال هایی که باعث رفتن کاربر از صفحه ی جاری بدون بستن اون میشن (مثل onsubmit) یک فلگ تعریف کن تا اگر رخ دادن، این فلگ true بشه.
در روال onunload این فلگ رو بررسی کن. اگر true بود یعنی کاربر در اثر PostBack به یک صفحه ی دیگه میره و اگر false بود کاربر صفحه رو بسته.

موفق باشید.