ASP.NETËÄÖÖÒ³Ãæµ¼º½·½Ê½Ö®±È½ÏÓëÑ¡Ôñ |
|
|
×÷ÕߣºÎ´Öª À´Ô´£ºÔ¹âÈí¼þÕ¾ ¼ÓÈëʱ¼ä£º2005-2-28¡¡Ô¹âÈí¼þÕ¾ |
|
¡¡ASP.NETËÄÖÖÒ³Ãæµ¼º½·½Ê½Ö®±È½ÏÓëÑ¡Ôñ |
×÷Õߣº ÏÉÈËÕÆ¹¤×÷ÊÒ www.ASPCool.com ʱ¼ä:2004-10-12 15:37:12 ÔĶÁ´ÎÊý:4177
|
ÔÚASP.NETÓ¦ÓÃÖУ¬Web±íµ¥Ö®¼äµÄµ¼º½ÓжàÖÖ·½Ê½£ºÓ󬼶Á´½Ó£¬ÓÃResponse.Redirect£¬ÓÃServer.Transfer£¬»òÕßÓÃServer.Execute¡£±¾ÎĽ«·ÖÎöÕâËÄÖÖµ¼º½·½Ê½µÄÒìͬ¼°ÆäÓÅȱµã£¬°ïÖúÄãÑ¡Ôñ×î¼ÑµÄµ¼º½·½Ê½¡£ Ò»¡¢³¬¼¶Á´½Ó ¡¡¡¡´ÓÒ»¸ö±íµ¥½øÈëÁíÒ»¸ö±íµ¥×î¼òµ¥µÄ·½Ê½ÊÇʹÓ**TML³¬¼¶Á´½Ó¿Ø¼þ¡£ÔÚWeb±íµ¥ÖУ¬Ê¹Ó󬼶Á´½ÓµÄHTML´úÂëÀàÈ磺 <a href="WebForm2.aspx">½øÈë±íµ¥2</a> ¡¡¡¡µ±Óû§µã»÷¸Ã³¬¼¶Á´½Ó£¬WebForm2.aspxÖ´Ðв¢½«½á¹û·¢Ë͵½ä¯ÀÀÆ÷¡£³¬¼¶Á´½Óµ¼º½·½Ê½¼¸ºõ¿ÉÓÃÓÚÈκεط½£¬°üÀ¨HTMLÒ³ÃæºÍÆÕͨµÄASPÒ³Ãæ¡£ASP.NET»¹ÌṩÁËÁíÒ»ÖÖ¿ÉÌæ»»Ê¹Óõķ½·¨£¬¼´HyperLink·þÎñÆ÷¿Ø¼þ£º <form id="Form1" method="post" runat="server"> <asp:HyperLink id="HyperLink1" runat="server" NavigateUrl="WebForm2.aspx">½øÈë±íµ¥2</asp:HyperLink> </form> ¡¡¡¡ÉÏÊöHTML´úÂëµÄÔËÐнá¹ûºÍµÚÒ»¸öÀý×ÓÏàͬ£¬ÒòΪASP.NET°ÑHyperLink Web·þÎñÆ÷¿Ø¼þÊÓΪһ¸öHTML³¬¼¶Á´½Ó¿Ø¼þ¡£µ«Á½ÕßÓÐÒ»µãÖØÒªµÄÇø±ð£¬HyperLink Web·þÎñÆ÷¿Ø¼þ¿ÉÒÔÔÚ·þÎñÆ÷¶Ë±à³Ì¡£¾ßÌåµØËµ£¬¿ÉÒÔÔÚ³ÌÐò´úÂëÖиıäËüµÄNavigateUrlÊôÐÔ£¬´Ó¶øÔÊÐí¹¹Ôì³ö¾ßÌåÄ¿±ê¿É¸ù¾ÝÓ¦Óõĵ±Ç°×´Ì¬¶¯Ì¬±ä»¯µÄ³¬¼¶Á´½Ó£¬ÀýÈ磺 Private Sub Button1_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click HyperLink1.NavigateUrl = "WebForm3.aspx" End Sub ¡¡¡¡Õâ¶Î´úÂëÖ´Ðкó£¬Èç¹ûÓû§µã»÷Á´½Ó£¬Ëû¿´µ½µÄ½«ÊÇWebForm3.aspx£¬¶ø²»ÊÇWebForm2.aspx¡£ ¶þ¡¢ÓóÌÐò¿ØÖÆÖض¨Ïò ¡¡¡¡ËäÈ»³¬¼¶Á´½ÓÄܹ»´ÓÒ»¸öÒ³Ãæµ¼º½µ½ÁíÒ»¸öÒ³Ãæ£¬µ«ÕâÖÖµ¼º½·½Ê½ÊÇÍêÈ«ÓÉÓû§¿ØÖƵġ£ÓÐЩʱºò£¬ÎÒÃÇ¿ÉÄÜÒªÓôúÂëÀ´¿ØÖÆÕû¸öµ¼º½¹ý³Ì£¬°üÀ¨ºÎʱתµ½ÁíÒ»¸öÒ³Ãæ¡£ÔÚÕâЩ³¡ºÏ£¬ASP.NETÓÐÈýÖÖ²»Í¬µÄ·½Ê½¿ÉÒÔ´ïµ½ÏàËÆµÄÄ¿µÄ£ºµ÷ÓÃResponse¶ÔÏóµÄRedirect·½·¨£¬µ÷ÓÃServer¶ÔÏóµÄTransfer»òExecute·½·¨¡£ÕâÈýÖÖµ¼º½·½Ê½µÄÐÐΪ»ù±¾ÏàËÆ£¬µ«Ò²ÓÐÇø±ð¡£ ¡¡¡¡2.1 Response.Redirect ¡¡¡¡Response.Redirect·½·¨µ¼ÖÂä¯ÀÀÆ÷Á´½Óµ½Ò»¸öÖ¸¶¨µÄURL¡£µ±Response.Redirect()·½·¨±»µ÷ÓÃʱ£¬Ëü»á´´½¨Ò»¸öÓ¦´ð£¬Ó¦´ðÍ·ÖÐÖ¸³öÁË״̬´úÂë302£¨±íʾĿ±êÒѾ¸Ä±ä£©ÒÔ¼°ÐµÄÄ¿±êURL¡£ä¯ÀÀÆ÷´Ó·þÎñÆ÷ÊÕµ½¸ÃÓ¦´ð£¬ÀûÓÃÓ¦´ðÍ·ÖеÄÐÅÏ¢·¢³öÒ»¸ö¶ÔÐÂURLµÄÇëÇó¡£ ¡¡¡¡Õâ¾ÍÊÇ˵£¬Ê¹ÓÃResponse.Redirect·½·¨Ê±Öض¨Ïò²Ù×÷·¢ÉúÔÚ¿Í»§¶Ë£¬×ܹ²Éæ¼°µ½Á½´ÎÓë·þÎñÆ÷µÄͨÐÅ£¨Á½¸öÀ´»Ø£©£ºµÚÒ»´ÎÊǶÔÔÊ¼Ò³ÃæµÄÇëÇ󣬵õ½Ò»¸ö302Ó¦´ð£¬µÚ¶þ´ÎÊÇÇëÇó302Ó¦´ðÖÐÉùÃ÷µÄÐÂÒ³Ãæ£¬µÃµ½Öض¨ÏòÖ®ºóµÄÒ³Ãæ¡£ ¡¡¡¡2.2 Server.Transfer ¡¡¡¡Server.Transfer·½·¨°ÑÖ´ÐÐÁ÷³Ì´Óµ±Ç°µÄASPXÎļþתµ½Í¬Ò»·þÎñÆ÷ÉϵÄÁíÒ»¸öASPXÒ³Ãæ¡£µ÷ÓÃServer.Transferʱ£¬µ±Ç°µÄASPXÒ³ÃæÖÕÖ¹Ö´ÐУ¬Ö´ÐÐÁ÷³ÌתÈëÁíÒ»¸öASPXÒ³Ãæ£¬µ«ÐµÄASPXÒ³ÃæÈÔʹÓÃǰһASPXÒ³Ãæ´´½¨µÄÓ¦´ðÁ÷¡£ ¡¡¡¡Èç¹ûÓÃServer.Transfer·½·¨ÊµÏÖÒ³ÃæÖ®¼äµÄµ¼º½£¬ä¯ÀÀÆ÷ÖеÄURL²»»á¸Ä±ä£¬ÒòÎªÖØ¶¨ÏòÍêÈ«ÔÚ·þÎñÆ÷¶Ë½øÐУ¬ä¯ÀÀÆ÷¸ù±¾²»ÖªµÀ·þÎñÆ÷ÒѾִÐÐÁËÒ»´ÎÒ³Ãæ±ä»»¡£ ¡¡¡¡Ä¬ÈÏÇé¿öÏ£¬Server.Transfer·½·¨²»»á°Ñ±íµ¥Êý¾Ý»ò²éѯ×Ö·û´®´ÓÒ»¸öÒ³Ãæ´«µÝµ½ÁíÒ»¸öÒ³Ãæ£¬µ«Ö»Òª°Ñ¸Ã·½·¨µÄµÚ¶þ¸ö²ÎÊýÉèÖóÉTrue£¬¾Í¿ÉÒÔ±£ÁôµÚÒ»¸öÒ³ÃæµÄ±íµ¥Êý¾ÝºÍ²éѯ×Ö·û´®¡£ ¡¡¡¡Í¬Ê±£¬Ê¹ÓÃServer.TransferʱӦעÒâÒ»µã£ºÄ¿±êÒ³Ãæ½«Ê¹ÓÃÔÊ¼Ò³Ãæ´´½¨µÄÓ¦´ðÁ÷£¬Õâµ¼ÖÂASP.NETµÄ»úÆ÷ÑéÖ¤¼ì²é£¨Machine Authentication Check£¬MAC£©ÈÏΪÐÂÒ³ÃæµÄViewStateÒѱ»´Û¸Ä¡£Òò´Ë£¬Èç¹ûÒª±£ÁôÔÊ¼Ò³ÃæµÄ±íµ¥Êý¾ÝºÍ²éѯ×Ö·û´®¼¯ºÏ£¬±ØÐë°ÑÄ¿±êÒ³ÃæPageÖ¸ÁîµÄEnableViewStateMacÊôÐÔÉèÖóÉFalse¡£ ¡¡¡¡2.3 Server.Execute ¡¡¡¡Server.Execute·½·¨ÔÊÐíµ±Ç°µÄASPXÒ³ÃæÖ´ÐÐÒ»¸öͬһWeb·þÎñÆ÷ÉϵÄÖ¸¶¨ASPXÒ³Ãæ£¬µ±Ö¸¶¨µÄASPXÒ³ÃæÖ´ÐÐÍê±Ï£¬¿ØÖÆÁ÷³ÌÖØÐ·µ»ØÔÒ³Ãæ·¢³öServer.Executeµ÷ÓõÄλÖᣠ¡¡¡¡ÕâÖÖÒ³Ãæµ¼º½·½Ê½ÀàËÆÓÚÕë¶ÔASPXÒ³ÃæµÄÒ»´Îº¯Êýµ÷Ó㬱»µ÷ÓõÄÒ³ÃæÄܹ»·ÃÎÊ·¢³öµ÷ÓÃÒ³ÃæµÄ±íµ¥Êý¾ÝºÍ²éѯ×Ö·û´®¼¯ºÏ£¬ËùÒÔÒª°Ñ±»µ÷ÓÃÒ³ÃæPageÖ¸ÁîµÄEnableViewStateMacÊôÐÔÉèÖóÉFalse¡£ ¡¡¡¡Ä¬ÈÏÇé¿öÏ£¬±»µ÷ÓÃÒ³ÃæµÄÊä³ö×·¼Óµ½µ±Ç°Ó¦´ðÁ÷¡£µ«ÊÇ£¬Server.Execute·½·¨ÓÐÒ»¸öÖØÔØµÄ·½·¨£¬ÔÊÐíͨ¹ýÒ»¸öTextWriter¶ÔÏ󣨻òÕßËüµÄ×Ó¶ÔÏó£¬ÀýÈçStringWriter¶ÔÏ󣩻ñÈ¡±»µ÷ÓÃÒ³ÃæµÄÊä³ö£¬¶ø²»ÊÇÖ±½Ó×·¼Óµ½Êä³öÁ÷£¬ÕâÑù£¬ÔÚÔÊ¼Ò³ÃæÖпÉÒÔ·½±ãµØµ÷Õû±»µ÷ÓÃÒ³ÃæÊä³ö½á¹ûµÄλÖᣠ¡¡¡¡ÎªËµÃ÷Æä¹¤×÷¹ý³Ì£¬ÏÂÃæÎÒÃÇ´´½¨Ò»¸öWeb±íµ¥£¬·ÅÈëÒ»¸ö°´Å¥¿Ø¼þ£¨Button1£©ºÍÒ»¸öÎı¾¿Ø¼þ£¨Literal1)£¬ÔÚÉè¼Æ½çÃæÖÐתÈë´úÂëÊÓͼ£¬¼ÓÈëÒ»¸öSystem.IOÃû³Æ¿Õ¼äµÄImportsÓï¾ä£¬È»ºó¼ÓÈëÓû§µã»÷°´Å¥Ê±Ö´ÐеĴúÂ룺 Private Sub Button1_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click Dim sw As StringWriter = New StringWriter() Server.Execute("WebForm2.aspx", sw) Literal1.Text = sw.ToString() End Sub ¡¡¡¡È»ºóΪͬһ¸öWebÓ¦Óô´½¨µÚ¶þ¸öÒ³ÃæWebForm2.aspx¡£×ªÈë¸ÃÒ³ÃæµÄHTMLÊÓͼ£¬ÐÞ¸ÄÆäPageÖ¸Áî½ûÖ¹ViewState¼ì²é£º <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm2.aspx.vb" Inherits="Navigate.WebForm2" EnableViewStateMac="false"%> ¡¡¡¡ÔÙתµ½Éè¼ÆÊÓͼ£¬ÎªµÚ¶þ¸öÒ³ÃæÔö¼ÓһЩ¿Ø¼þ¡£½ÓÏÂÀ´£¬°ÑµÚÒ»¸öÒ³ÃæÉèÖóÉĬÈÏÒ³Ãæ£¬Æô¶¯Ó¦Óᣵã»÷°´Å¥£¬WebForm2µÄ¿Ø¼þ½«ÏÔʾÔÚWebForm1ÖзÅÖÃLiteral°´Å¥µÄµØ·½£¬Èçͼһ£¬×¢ÒâÒ³Ãæ±êÌâºÍURLÈÔ¾ÉÏÔʾÔÊ¼Ò³ÃæWebForm1¡£ ¡¡¡¡Í¼Ò»£ºÓÃServer.ExecuteºÏ²¢Á½¸öÔ´ÎļþµÄÒ³Ãæ ¡¡¡¡ÓÃServer.Transfer»òServer.Execute·½·¨ÊµÏÖµ¼º½Ê±£¬»¹Òª×¢ÒâÒ»µã£º×îºóµÃµ½µÄÒ³Ãæ¿ÉÄܲ»ÊǺϷ¨µÄHTMLÒ³Ãæ£¬ÒòΪ×îÖÕ·µ»Ø¸ø¿Í»§¶ËµÄÒ³Ãæ¿ÉÄܰüº¬¶à¸ö<HTML>ºÍ<BODY>µÈ±ê¼Ç¡£IEä¯ÀÀÆ÷¿´À´Äܹ»ÈÝÈ̲¢ÕýÈ·´¦ÀíÕâÀàÇéÐΣ¬µ«Èç¹ûÓû§ÒªÓõ½ÆäËûµÄä¯ÀÀÆ÷£¬×îºÃ×Ðϸ²âÊÔһϡ£ <b>Èý¡¢±È½ÏÓëÑ¡Ôñ</b> ¡¡¡¡¼ÈÈ»´ÓÒ»¸öÒ³Ãæµ¼º½µ½ÁíÒ»¸öÒ³ÃæµÄ°ì·¨ÓÐÕâô¶à£¬Ó¦¸ÃÈçºÎÑ¡Ôñ×î¼ÑµÄµ¼º½·½Ê½ÄØ£¿ÏÂÃæÊÇһЩÐèÒª¿¼ÂǵÄÒòËØ£º ¡¡¡¡<b>·</b>Èç¹ûÒªÈÃÓû§À´¾ö¶¨ºÎʱת»»Ò³ÃæÒÔ¼°×ªµ½ÄÄÒ»¸öÒ³Ãæ£¬³¬¼¶Á´½Ó×îÊʺϡ£ ¡¡¡¡<b>·</b>Èç¹ûÒªÓóÌÐòÀ´¿ØÖÆ×ª»»µÄÄ¿±ê£¬µ«×ª»»µÄʱ»úÓÉÓû§¾ö¶¨£¬Ê¹ÓÃWeb·þÎñÆ÷µÄHyperLink¿Ø¼þ£¬¶¯Ì¬ÉèÖÃÆäNavigateUrlÊôÐÔ¡£ ¡¡¡¡<b>·</b>Èç¹ûÒª°ÑÓû§Á¬½Óµ½Áíһ̨·þÎñÆ÷ÉϵÄ×ÊÔ´£¬Ê¹ÓÃResponse.Redirect¡£ ¡¡¡¡<b>·</b>ÓÃResponse.Redirect°ÑÓû§Á¬½Óµ½·ÇASPXµÄ×ÊÔ´£¬ÀýÈçHTMLÒ³Ãæ¡£ ¡¡¡¡<b>·</b>Èç¹ûÒª½«²éѯ×Ö·û´®×÷ΪURLµÄÒ»²¿·Ö±£Áô£¬Ê¹ÓÃResponse.Redirect¡£ ¡¡¡¡<b>·</b>Èç¹ûÒª½«Ö´ÐÐÁ÷³ÌתÈëͬһWeb·þÎñÆ÷µÄÁíÒ»¸öASPXÒ³Ãæ£¬Ó¦µ±Ê¹ÓÃServer.Transfer¶ø²»ÊÇResponse.Redirect£¬ÒòΪServer.TransferÄܹ»±ÜÃâ²»±ØÒªµÄÍøÂçͨÐÅ£¬´Ó¶ø»ñµÃ¸üºÃµÄÐÔÄܺÍä¯ÀÀЧ¹û¡£ ¡¡¡¡<b>·</b>Èç¹ûÒª²¶»ñÒ»¸öASPXÒ³ÃæµÄÊä³ö½á¹û£¬È»ºó½«½á¹û²åÈëÁíÒ»¸öASPXÒ³ÃæµÄÌØ¶¨Î»Öã¬ÔòʹÓÃServer.Execute¡£ ¡¡¡¡<b>·</b>Èç¹ûҪȷ±£HTMLÊä³öºÏ·¨£¬ÇëʹÓÃResponse.Redirect£¬²»ÒªÊ¹ÓÃServer.Transfer»òServer.Execute·½·¨¡£ ¡¡¡¡±¾ÎÄÒë×Ô:http://www.ondotnet.com/pub/a/dotnet/2003/04/07/aspnetnav.html ¡¡¡¡ÔÎÄÌâÄ¿:¡¶Managing ASP.NET Navigation¡·¡£
| | 
|
|
Ïà¹ØÎÄÕ£ºÏà¹ØÈí¼þ£º |
|