| در ASP.NET برای رفتن از يک صفحه web form به صفحه ديگر راه های مختلفی وجود دارد مانند HyperLink ، response.redirect ، server.transfer و server.execute . Hyperlink : بدون شک راحت ترين راه برای رفتن از يک صفحه به صفحه ديگر استفاده از hyperlink است . وقتی کاربر در مرورگر خود روی hyperlink کليک کرد مرورگر صفحه جديد را load خواهد کرد . <a href="WebForm2.aspx">WebForm2</a>
روش ديگر استفاده از hyperlink ، استفاده از Hyperlink Web Server Control است . <form id="Form1" method="post" runat="server">
<asp:HyperLink id="HyperLink1" runat="server"
NavigateUrl="WebForm2.aspx">WebForm2</asp:HyperLink>
</form> وقتی اين کنترل بر روی web form قرار گرفت هنگام اجرا تبديل به نمونه اول می شود . با اين تفاوت که هنگام اجرا می توانيد با استفاده از خاصيت NavigateURL مسير آن را تغيير دهيد . اگر چه hyperlink کاربر را به صفحه ديگری می برد ولی کليک بر روی آن کاملا ً در اختيار کاربر است . موقعيتی ممکن است پيش آيد که شما به عنوان برنامه نويس بخواهيد کاربر را به صفحه ديگری منتقل کنيد . در چنين زمانی استفاده از Transfer و Execute يا Redirect به کمک شما می آيند . Redirect استفاده از متد response.redirect باعث می شود که مرورگر URL ی که در پارامتر آن ذکر می شود را نمايش دهد . وقتی از اين متد استفاده کرديد ، سرور صفحه ای به مرورگر با header ی مشابه 302 Object Moved و آدرس صفحه جديد می فرستد . بدينوسيله مرورگر از آدرس جديد خبردار شده و صفحه جديد را باز می کند . Transfer وقتی سرور به server.transfer بر می خورد اجرای فايل فعلی را متوقف و شروع به اجرای فايل جديد که روی همان سرور باشد می کند . به طور پيش فرض مقاديری که در request در فايل اول است به فايل دوم ارسال نمی شود ولی اگر پارامتر دوم Transfer را True و در فايل دوم دايرکتيو ِ EnableViewStateMac را False کنيد مقادير request به فايل دوم ارسال می شود . دقت کنيد که همه اين اعمال در سرور انجام می شود بنابراين مرورگر URL صفحه دوم را نمی داند و همچنان صفحه اول را نشان می دهد . Execute اين متد اجازه می دهد تا در فايل اول يک aspx ديگر را صدا زده و اجرا کنيم ، سپس کنترل دوباره به فايل اول باز می گردد . با اين روش می توان توابعی را در صفحه دوم صدا زد و خروجی آنها که در response نوشته می شود را در صفحه اول استفاده کرد . بر روی صفحه اول يک literal component قرار دهيد ، در صفحه دوم و در load آن response.write "salam" را بنويسيد . حالا در صفحه اول در رويداد کليک يک کليد اين کد را بنويسيد .
Dim sw As IO.StringWriter = New IO.StringWriter() Server.Execute("WebForm2.aspx", sw) Literal1.Text = sw.ToString() حالا برنامه را اجرا کنيد ، متن salam در Literal در صفحه اول نوشته می شود . چه موقع از کدام استفاده کنيم ؟ برای لينک به صفحه های html معمولی و وقتی اهميت ندارد کاربر چه زمانی به صفحه ديگر برود از hyperlink معمولی می توان استفاده کرد ، وقتی مسير hyperlink تغيير می کند بهتر است از کامپوننت hyperlink استفاده کنيد . از redirect زمانی استفاده کنيد که به فايل غير ASPX يا خارج از سرور خودتان می خواهيد لينک دهيد . همچنين زمانی که در URL پارامتر هايی را بخواهيد بفرستيد . اگر می خواهيد در روی سرور خودتان به فايل ديگر ASPX ی ارجاع دهيد از Transfer استفاده کنيد و اگر می خواهيد از خروجی فايل دوم در فايل اول استفاده کنيد از Execute استفاده کنيد . دقت کنيد که در transfer و execute امکان تداخل کد های html وجود دارد ، اگر چنين شد از همان redirect استفاده کنيد . ترجمه و خلاصه شده از سايت OnDotnet.com .
|