PDA

View Full Version : سوال: event بسته شدن فرم در asp



k.asasi_programmer
چهارشنبه 11 فروردین 1389, 05:33 صبح
با سلام خدمت دوستان گرامی و نیز آرزوی ساعاتی خوش برای شما دوستان.
من قصد دارم هنگامی که کاربر دکمه ضربدر قرمز رنگ فرم ASP را می زند، بتوانم کدی درdefault.aspx.cs اجرا کنم.
از راهنماییتان خیلی ممنونم.:قلب:

hjran abdpor
چهارشنبه 11 فروردین 1389, 06:30 صبح
با سلام به شما دوست عزیز

برای اینکار شما دو سه تا راه حل داری ؟
1- از جاوا اسکریپت استفاده کنی .....
2- از فایل های asmx استفاده کنی ...پ
یک سرچ بزن فکر کنم کدشو تو فروم سایت باشه .

با تشکر

exlord
چهارشنبه 11 فروردین 1389, 12:00 عصر
<script language="javascript" type="text/javascript">
window.onunload = unloadPage;

function unloadPage() {
alert("unload event detected!");
}
</script>

k.asasi_programmer
چهارشنبه 11 فروردین 1389, 14:51 عصر
<script language="javascript" type="text/javascript">
window.onunload = unloadPage;

function unloadPage() {
alert("unload event detected!");
}
</script>

exlord عزیز از راهنماییتان خیلی ممنونم
مشکلی که دارم این است که در تابع exit ای که درdefault.aspx.csخودم تعریف کرده ام دسترسی ندارم.خیلی ممنون می شم از کمکتان.

Vahid_moghaddam
چهارشنبه 11 فروردین 1389, 16:49 عصر
از page method ها استفاده کنید.

k.asasi_programmer
پنج شنبه 12 فروردین 1389, 00:34 صبح
از page method ها استفاده کنید.
وحید جان لطفا طرز استفاده از page Method را توضیح می دهی.من هر چه قدر در قسمت زیر گشتم به چنین متدی برنخوردم.

<script language="javascript" type="text/javascript">
</script>

بنده چگونه می توانم با page method به متد های تعریف شده در کد C#‎‎صفحه وبم د سترسی داشته باشم.
با تشکر قبلی :چشمک:

Vahid_moghaddam
پنج شنبه 12 فروردین 1389, 00:48 صبح
lمن یه لینک می ذارم. در مورد بسته شدن صفحه نیست اما برای آشنایی با page method ها خوبه. متاسفانه فرصت جستجوی بیشتر ندارم. ببخشید.

http://encosia.com/2007/07/11/why-aspnet-ajax-updatepanels-are-dangerous/
(file:///C:/Users/Home/Desktop/vahid/article/Why%20ASP.NET%20AJAX%20UpdatePanels%20are%20danger ous%20_%20Encosia.htm)

k.asasi_programmer
شنبه 14 فروردین 1389, 02:32 صبح
دوستان. من هنوز مشکلم حل نشده. اگر چه در اینترنت جستجو کردم و لینک دوستمان را دیدم. ممنون می شم اگر کسی قبلا این مشکل را رفع کرده، کمکی کنه.:متفکر:

prankster
شنبه 14 فروردین 1389, 21:35 عصر
در سمت سرور:


[System.Web.Services.WebMethod]
public static void Exit()
{
// save log
}


در سمت کلاینت:


<asp:ScriptManagerrunat="server" ID="ScriptManager1" EnablePageMethods="true"></asp:ScriptManager>
<script type="text/javascript">
window.onunload = function() {
alert(PageMethods.Exit());
}
</script>

kakhky
یک شنبه 15 فروردین 1389, 22:49 عصر
<script language="javascript" type="text/javascript">
window.onunload = unloadPage;

function unloadPage() {
alert("unload event detected!");
}
</script>
من از همین استفاده کردم مشکلم حل شده ممنون.شما هم استفاده کنید.

k.asasi_programmer
پنج شنبه 19 فروردین 1389, 03:23 صبح
در سمت سرور:


[System.Web.Services.WebMethod]
public static void Exit()
{
// save log
}


در سمت کلاینت:


<asp:ScriptManagerrunat="server" ID="ScriptManager1" EnablePageMethods="true"></asp:ScriptManager>
<script type="text/javascript">
window.onunload = function() {
alert(PageMethods.Exit());
}
</script>

دوست عزیز می شه در مورد توابع استاتیک توضیح بدید.آخر در این نوع توابع برنامه نویس به بعضی متغییر های برنامه مثل مقدار Session و تابع(Response.Redirect(URL دسترسی ندارد.راه حل چیست؟
با تشکر

prankster
جمعه 20 فروردین 1389, 15:30 عصر
هنگامی که درخواست برای یک صفحه aspx ارسال می شود، ابتدا نمونه ای از کلاس آن صفحه مثل نمونه ساختن از هر کلاس دیگر ساخته می شود، در این حالت دسترسی به تمامی متد های غیر static تعریف شده در صفحه وجود دارد. در مورد صفحات aspx بعد از این کار چندین phase مختلف اتفاق می افتد:
- init: ابتدا request پردازش شده و مقادیر اولیه کنترل های صفحه بارگزاری می شوند، تازه در این فاز است که متغیر های Request و Response در سمت سرور قابل دسترس می شوند و طبیعتا Session و Response.Redirect از این فاز به بعد قابل دسترس هستند
-loadviewstate: در این فاز مقادیر جدید کنترل ها بعد از postback شدن صفحه بارگزاری می شوند
-load: در این فاز مقادیر اولیه و postback شده کنترل های صفحه همگی بارگزاری شده اند و اصطلاحا صفحه Load شده است، این جایی است که معمولا برنامه نویس ها کد نویسی صفحه را در آن آغاز می کنند:

protected void Page_Load(object sender, EventArgs e)ا
- prerender: کنترل ها آماده render شدن به html می شوند، این فاز آخرین فازی است که امکان تغییر مشخصات کنترل ها در آن وجود دارد
- render: کنترل ها به ترتیب به کد html تبدیل می شوند و صفحه آماده ارسال به کلاینت می شود، این فاز آخرین فازی است که دسترسی به Request و Response در آن وجود دارد
- unload: صفحه از حافظه سرور پاک شده و متغیر ها garbage collect می شوند

فرآیند بالا تنها در مورد صفحات aspx صادق است، و به این معنی است که تقاضایی که به صفحه داده می شود فرآیند درازی را برای تبدیل شدن به html طی می کند

انواع دیگر درخواست به سرور استفاده از HttpModule و HttpHandler ها است که فرآیند درخواست و جواب به درخواست توسط برنامه نویس انجام می شود و معمولا در سطوح بسیار حرفه ای کاربرد دارد. کامپوننت ScriptManager برای ارتباط برقرار کردن به صورت AJAX با سرور متد هایی که با attribute زیر مشحص شده اند را در زمان runtime به عنوان HttpHandler شناخته و به گونه ای متفاوت از صفحات aspx با آن برخورد می کند

[System.Web.Services.WebMethod]برای درک بهتر، در مورد HttpModule ها و HttpHandler ها مطالعه کنید

اما برای دسترسی به Session در متد استاتیک تعریف شده به صورت زیر عمل کنید:

HttpContext.Current.Session["mySession"]دسترسی به Response.Redirect از آنجایی که این متد به عنوان یک HttpHandler یا به عبارت دیگر یک صفحه دیگر برای سرور شناخته می شود امکان پذیر نیست و باعث بوجود آمدن Exception در سمت سرور می شود:

HttpContext.Current.Response.Redirect("address");