PDA

View Full Version : کاربرد AutoEventWireup="false" چیست



marzban
پنج شنبه 28 تیر 1386, 09:24 صبح
با سلام
می خواستم ببینم کاربرد AutoEventWireup="false" چیست
لطفا راهنمایی کنید
با تشکر مرزبان

mehdi.mousavi
پنج شنبه 28 تیر 1386, 09:46 صبح
با سلام
می خواستم ببینم کاربرد AutoEventWireup="false" چیست
لطفا راهنمایی کنید
با تشکر مرزبان


سلام.
توضیحات کامل در اینباره رو اینجا بخونید. (http://www.codeproject.com/aspnet/AutoEventWireup.asp)

nafasak
جمعه 14 خرداد 1389, 17:24 عصر
با سلام
می خواستم ببینم کاربرد AutoEventWireup="false" چیست
لطفا راهنمایی کنید
با تشکر مرزبان
از دو متد برای ایجاد کردن صفحات استفاده می‌کند:
1- کد درون خط In-line code
2- کد پشت صفحه code behind
کد دورن خط کدی است که مستقیما داخل صفحه ASPX قرار داده شده است. در حالی که کد پشت صفحه به آن دسته از کدهایی گفته میشود که درون یک کلاس فایل دیگر قرار دارند. این کار باعث میشود تا کدهای HTML از منطق برنامه به زیبایی تفکیک شوند.
زمانی که ما از ویژوال استودیو دات نت برای ایجاد وب فرمهای ASP.NET استفاده میکنیم، به طور پیش فرض از متد کد پشت صفحه استفاده میشود. علاوه بر این،ویژوال استودیو دات نت به طور خودکار زمانی که پروژه خود را میسازیم یا اصطلاحا build میکنیم، آن را پیش کامپایل میکند.
راهنماها ( directives ) در ASP.NET تنظمیات و ویژگیهای صفحه را کنترل میکنند. این راهنماها میتوانند در هر کجای صفحه قرار گیرند اما معمولا مرسوم است که در اولین خطوط صفحه قرار داده میشوند. ضمن اینکه هم در فایلهای ASPX و هم در فایلهای ASCX قرار میگیرند.
ASP.NET از 8 راهنمای مختلف استفاده میکند که به شرح زیر هستند:
• @ Page
• @ Control
• @ Import
• @ Implements
• @ Register
• @ Assembly
• @ OutputCache
• @ Reference
راهنمای Page به دفعات مورد استفاده قرار میگیرد و برای ویرایش بخش عظیمی از تنظیمات به کار میرود که چگونگی کارکرد پارسر و کامپایلر صفحه را کنترل میکنند. آنچه در زیر میبینید لیستی است از خصوصیاتی که معمولا در این راهنما استفاده میشوند:
@ Page language="c#" CodeFile="WebForm1.aspx.cs"
AutoEventWireup="false" Inherits="TestWebApp.WebForm1"
• Language مشخص میکند که کد درون خط صفحه به چه زبانی نوشته شده است. مقدار این خصوصیت میتواند VB, C#,JS باشد
• codeFile مشخص کننده نام صفحه ای است که کدهای پشت صفحه در آن قرار دارند. این فایل نیز میبایست از مقدار خصوصیت Language تبعیت کند.
• Inherits مشخص کننده یک کلاس واجد شرایط مناسب برای ارث بری کردن صفحه ASPX از آن است. معمولا این کلاس همانی است که در فایل کد پشت صفحه تعریف شده است.
• AutoEventWireup یک خصوصیت منطقی است که میتواند مقدار true یا false داشته باشد مشخص میکند آیا رخدادهای ASP.NET به طور خودکار سیم پیچی ( wired ) بشوند یا خیر!!
مقدار ویژگی AutoEventWireup را میتوان در مکانهای زیر تعیین کرد:
• فایل Machine.config
• فایل Web.Config
• وب فرمهای ASPX به صورت مجزا
• کنترلهای وب ASCX
مقدار خصوصیت AutoEventWireup میتواند در فایلهای Web.config و یا Machine.config به این صورت تعریف گردد:
<configuration> <system.web> <pages autoEventWireup="true|false"
/> </system.web> </configuration>
نکته : چنانچه شما این کار را در فایل Machine.config انجام دهید، این کاربر روی تمامی وب فرمهای آن سرور که وب فرمها روی آن پردازش میشوند و به کلاینت ارسال میشوند تاثیر خواهد گذاشت. چنانچه این کار را در فایل Web.config انجام دهید تغییرات تنها روی کلیه وب فرمهای پروژه فعلی تاثیر خواهند گذاشت.
اما این خصوصیت در واقع چه کاری انجام میدهد؟ بیایید در یک مثال عملی آن را بررسی کنیم. بهترین کار برای مشاهده عملکرد این خصوصیت این است:
• یک رشته تعریف کنیم که در وب فرم مورد نظرمان به نام msg و به صورت public باشد
• در بخش HTML وب فروم مورد نظر، کد زیر را در بخش <head> وارد کنیم.
<% Response.Write(msg); %>
در رخداد Page_Load مقدار متغیر msg را اینگونه تعیین میکنیم:
msg= "We are in Page_Load()";
زمانی که برنامه را اجرا میکنیم، میبنییم که عبارت We are in Page_Load() روی صفحه چاپ میشود. نکته این که در این حالت مقدار AutoEventWireup برابر true است.
اکنون چنانچه کد مربوط به مدیر رخداد ( Event Handler ) را حذف کنیم و مقدار خصوصیت AutoEventWireup را false کنیم دیگر پیغام ظاهر نخواهد شد.
چنانچه کد مدیر رخداد را اضافه کنیم و مقدار AutoEventWireup را true کنیم، بازهم پیغام ظاهر خواهد شد.
حال ببینیم دلیل این واکنش ها چیست؟
زمانی که مقدار AutoEventWireup برابر False باشد، به طور خودکار برای Page_Load و Page_Init نیاز به مدیر رخداد داریم اما در صورت true بودن مقدار این ویژگی دیگر ASP>NET در زمان اجرا نیازی به چنین مدیر رخدادی ندارد. آنچه که باید به ذهن بسپارید این است که خصوصیت AutoEventWireup به طور پیش فرض برای کل ماشین برابر true است
http://www.tebyan.net/Weblog/lok_ik/post.aspx?PostID=76805