[±Ð¾Ç]±¦V.NET¶}µo¤HûªºAjax §Þ³N¥»Oµ¦²¤
¦b³oùاڱN¸Õ¹Ï¦Ò¹î¤@¤U¥Ø«e.NET¥»Oªº¤UªºAjax®Ø¬[¡A§Ú¤]¸Õ¹Ï±q¤¤Á`µ²¥X¨Ó¤@ºØ¤èªk¡A¨Ï±o§A¥i¥H¦b²³¦h°ò©ó.NET¥»OªºAjax®Ø¬[©M¤u¨ã¥]¤¤ §ä¨ì§A©Ò¦X¾Aªº¤@ºØ¡A¦P®É¤]§Æ±æ§A¦b¦Ò¹î¡B¹w¬ã©M¨Ï¥Î³o¨Ç¬y¦æªº³o¨ÇAjax-NET ªº®Ø¬[®É¡A°µ±o²z©Ê©M¦³ªº©ñ¥Ú¡C
¡@¡@§Ú·Q¡A¤å³¹ªº¤èªk·|µ¹¥Ø «e¨Ï¥ÎAjaxªº.NET¥Î¤á±a¨ÓÀ°§U¡A±q¦Ó´£°ª§A¦b.NET¥»O¤U¨Ï¥ÎAjaxªºÅéÅç¡C¬°¤°麽³o麽»¡¡A¦]¬°³Ìªñ§Úªº¤@ӫȤá(À³¸Ó¬O¤@¨Ç«È¤á)ªº¬ãµo¥D ºÞ¹ï§Ú»¡¡A§Ú̹ïAtlas «D±`¿³½ì¡A·Q¤F¸Ñ§ó¦h¤@¨Ç¬ÛÃöªº¤º®e©M¦p¦ó¶}©l¬Ý«ÝAtlas¡A¦]¬°¤UÓ¤ë·|¨Ó¤@ÓAtlasªº±M®a©M§ÚÌ¥æ¬y¡C¦]¬°§Úª¾¹D³oÓ¥DºÞ¤â¤W´x´¤µÛ¤@Ó Ajax¬[ºcªº·~°ÈÀ³¥Î¡A¥Ø«e¦b¦Ò¼{±q.NET v1.1¾E²¾¨ì.NET v2.0¡AAtlas¯à¦b«ç¼Ëªºµ{«×¤WÀ°¦£¥L©Î¥LªºTeam¡H§Ú¨S¦³»¡¤Ó¦h¡A¦]¬°¤ßùاڦ³¨Ç¦YÅå¡A¥Ø«eªº¥L̪º¬[ºcÀ³¥ÎAtlas ¥i¯à¨Ã¤£¬O¤@Ó©ú´¼ªº¿ï¾Ü¡A·íµM³oÓ¾á¤ß°ò©ó§Ú¥Ø«e¹ïAtlasªº²z¸Ñ¡C
¡@¡@§Ú¦CÁ|©M°Q½×ªºAjax-NETªº®Ø¬[©M¤u¨ã¥]¬A Atlas(Jan CTP), Anthem.NET, MagicAjax.NET , Ajax.NET Professional ©MwwHoverPanel Control¡A³o°ò¥»³£¬O§ÚÃöµùªº.NET¥»Oªº¤UªºAjax ªº¤@¨Ç®Ø¬[©M¹ê²{¡C °ò¥»¤W¤]³£¬O§Úªº³o½g¤å³¹¤¤¦CÁ|ªº¡A¥t¥~¤@Óì¦]¬O¦]¬°¥L̰ò¥»¤W³£¬O¶}·½ªº¡A³oÓ«D±`«n¡A¦]¬°¨S¦³·½¥N½X¡A§Ú̱N¤£ª¾¹D¨s³ºµo¥Í¤F¤°麽¡C¥t¥~§ÚµL·N©ó ¨Ï¤§¦¨¬°¹³Daniel Zeiss§@ªº³oÓ¤ñ¸û³ø§i¡C
¡@¡@º¥ý¡A¶}ªù¨£¤sªº»¡©ú§ÚªºÆ[ÂI¡C
¡@¡@¹ï©ó¶}·½©Î²{¦³ªº Ajax-NET§Þ³N©Î®Ø¬[ªº¿ï¥Î¥²¶·°w¹ï§A¥Ø«eÀ³¥Îªº¬[ºc¨Ó¿ï¨ú©M¦Ò¼{¡A¦pªG§A¥Ø«eªº¬[ºc¬O"¦üAjax"ªº¡A¨º麽§A¦b¿ï¾Ü²{¦b©Ò¦³¬y¦æªºAjax- NETªº§Þ³Nªº®ÉÔ³£¥²¶·«D±`¤p¤ß¡F¦Ó¦pªG§A¥Ø«eªºÀ³¥Î¬O¨Ï¥Î¶Ç²ÎªºASP.NETªºÀ³¥Î¬[ºc(©Î·Ç³Æ¥ÎASP.NET v2.0¶}©l³Ð«Ø·sªºÀ³¥Î)¡A¨º麽¥Ø«e¬y¦æªºAjax-NETªº®Ø¬[©M§Þ³N³£¬O´¶¹M¾A¦Xªº¡AÃöÁä§An¦b¦X¾Aªº®É¾÷¿ï¾Ü¦X¾Aªº¬YӮج[©Î¹ê²{¡C
¡@ ¡@¦b§Úªº²´¤¤¡A¥Ø«e¬y¦æªºAjax-NETªº®Ø¬[©Î¹ê²{³£¬OAdd-in (Plug-in)ªº¼Ò¦¡ªº¡A¤]´N¬O»¡³o¨Ç®Ø¬[¹ï©ó©Ò¦³«á¤@ºØ§Y¨Ï¥Î¶Ç²ÎªºASP.NETªºÀ³¥Î¬[ºc(©Î·Ç³Æ¥ÎASP.NET v2.0¶}©l³Ð«Ø·sªºÀ³¥Î)¬OAwaredªº¤]´N¬O«D±`¦³§Q©M¤è«Kªº¡C¦ý¹ï©ó"¦üAjax"ªº¬[ºc¨Ó»¡¡A±¡ªp¦³©Ò¤£¦P¡A»Ýn§A±q¥t¥~ªº¨¤«×¨Ó¿Å¶q¡A¦³¿ï¾Ü ªº¨Ï¥Î¡C
¡@¡@¨º¤°麽¬O"¦üAjax" ªº¬[ºc©O¡A³o´N¬O»¡¡A§AªºÀ³¥Îµ{§Ç¬O¦bAjax·§©À´£¥X¤§«e´N³Ð«Øªº¡C±q«È¤áºÝ©MªA°È¾¹ºÝªº¥æ¤¬¤ÀªR¨Ó»¡¡A§Aªº«È¤áºÝ¦³¤j¶qªºJavascript ¥N½X±µ¨üXML¼Æ¾Ú¡A¶i¦æ¹ï¶Hªº§Ç¦C¤Æ¡AµM«á¨Ï¥ÎJavascript°t¦X¨ä¥¦ªºHTML§Þ³N®i²{³o¨Ç¹ï¶H©M¼Æ¾Ú¡A¤]¥i¯à§AÁÙ¦³¤@°ïHTC©Î¨ä¥¦ªº JavascriptªºHTMLªí²{¼h±±¥ó¡C§AªºªA°È¾¹ºÝ¬O¤@ÓFacade(©ÎªÌ¬OAdapter,Observer)¼Ò¦¡ªº(Handler)±±¨î ¾¹¡A±µ¦¬«È¤áºÝJavascriptªºXML½Ð¨D¼Æ¾Ú«á¡AµM«á¸ÑªRXML¡AµM«á½Õ¥Î¬ÛÀ³ªº¬YÓªA°È©Î·~°È²Õ¥ó¡A¦A±Nµ²ªG¥HXMLªº§Î¦¡ªð¦^µ¹«È¤áºÝ Javascript ¡A«È¤áºÝªºJavascript±µ¦¬¤§«á¡A¦A¶i¦æ³B²z©MÅã¥Ü¡A¦]¬°¥i¥H¨Ï¥ÎHTMLªºDOM ©MCSS¡A©Ò¦³¶±ªº®i²{¬O°ÊºAªº¡C
¡@¡@³o¼Ë«È¤áºÝ¬O<Ajax in Action>¤¤´yzªºScript-centric architecture ©ÎData-centric interactions ªº¤è¦¡¡C¦Ó¥B³oºØ¤è¦¡©MJesse James Garrett¦CÁ|ªºAjax ¬O³ÌÃþ¦üªº¡A¥u¤£¹L¨º®É§A©Î§Ú¤£ª¾¹D³oÓ¥i¥H¥sAjax¡A¥u¤£¹L¬O²{¦bªº¤H»~¸Ñ¤FAjax¡AAjax¦¨¤F¤@ºØ§Þ³N¡A¤@ºØ¯S©Ê¡A¦Óº¥ý¤£¬O¤@ºØ¬YºØ¬[ºc¤U Web À³¥Î¤F¡C
¡@¡@¦Ó¥B¥Ø«e¬y¦æªºAjax-NETªº®Ø¬[°ò¥»¤W³£¨S¦³¹ê²{Âù¦V§Ç¦C¤Æ¡A¦]¬°¹ê²{¤@ÓTextBoxªº¦Û°Ê§¹¦¨«È¤áºÝ ¥u¥Î±µ¦¬¼Æ¾Ú´N¦æ¤F¡A®Ú¥»¤£¥Î¶Ç¦^¼Æ¾Ú/¹ï¶H¨ìªA°È¾¹ºÝ¡A¦P¼Ë°µ¤@ÓAjaxªºª¬ºA¶i«×±ø¤]¤£¥Î¡A¦ý³o¨Ç³£¬OAjax°Ú¡A§Ú̿Ŷqªº¼Ð·Ç¬O²§¨Bªº¡B¶±¨S ¦³¨ê·s¡C
¡@¡@«Ü©êºp¡A§Ú¥Î¤F³o麽¦r¤~¸ÑÄÀ§¹§ÚªºÆ[ÂI¡C³Ì«á¥i¥H³o麽»¡¡A¦pªG§AªºÀ³¥Î¤w¸g¬OAjax¬[ºcªº¡A¨º麽§A»Ýn¥J²Ó¿ï¾Ü¨Ï¥Î¥Ø«e ªºAjax-NET®Ø¬[¡A½T«O¥¦¤]´£¨ÑÂù¦V§Ç¦C¤Æ¥\¯à¡AÝ®e§Aì¨ÓªºÀ³¥Î©M¬[ºc¡C¦pªG§AªºÀ³¥Î¤£¬OAjax¬[ºcªº¡A¨º麽§A¥i¥H¨Ì¾Ú¤@¨Ç±ø¥ó¨Ó¿ï¾ÜAjax -NET®Ø¬[¡C
¡@¡@µM«á§Ú̦^¨ì¤å³¹ªº¶}©l¡A¨Ó¬Ý¤@¨Ç¬y¦æªºAjax-NET®Ø¬[
¡@¡@1. MagicAjax.NET
¡@¡@³o¬O¥Ø«e®Ø¬[¤¤ª©¥»¸¹³Ì¤pªº¤@ÓAjax-NET¹ê²{¡A³\¦h¤H«Ü³ßÅw¥¦¡A¬Æ¦Ü¤@¨£¦p¬G¡A¦ý¯uªº¬Ý¹L¥¦ªº¥N½X¤§«á¡A§Ú¦³¨Ç¾á¼~¡C
¡@ ¡@MagicAjax.NET°ò©ó³o¼Ë¤@ºØµ¦²¤¡A§Y__doPostBack ·|´£¤Î¾ãÓªºASP.NET¶±¡A³o¼Ë·|¾ÉP¶±¨ê·s¡A©Ò¥HMagicAjax.NET¨Ï¥ÎAJAXCbo.DoPostCallBack °µ§½³¡ªº´£¥æ¡A¦Ó¨CÓAjaxPanel ¤¤ªº¤º®e«h¹ïÀ³«È¤áºÝ§Y®ÉªºHTML¤º®e¡A¦]¬°¦bMagicAjax.NET¤¤¡A«È¤áºÝ¥u¥Î°õ¦æeval(responseText) ªA°È¾¹ºÝRenderedªð¦^ªºHTML´N¥i¥H¤F(«Ü³Q°Ê)¡C
¡@¡@¥Ñ©óDoPostCallBack ·|´£¥æViewState ¥H¤ÎAjaxPanelx$RBS_Store¡A´X¥G¬O¥ÎXMLHttpRequest ¼ÒÀÀ¤@Ó¥¿±`ªº´£¥æ¡A©Ò¥HªA°È¾¹ºÝ¥i¥H³Ð«Ø¶±ªº¹ê¨Ò¤]¥i¥H®Ú¾ÚViewState «ì´_©Ò¦³ªº±±¥óª¬ºA¡A¦P¼ËAjaxPanel ¥H¤ÎAjaxControl ¤]³£·|¹ê¨Ò¤Æ¡AµM«á±µ¦¬«È¤áºÝ¶Ç¨Óªº_EventTarget, _EventArgument ¨«¥¿±`ªºASP.NET±±¥óªº³B²z¹Lµ{¡Aµ¥±±¥óRendered¤§«á¡A³Ì²×ªºHTML¿é¥X³Q¶Ç¦^«È¤áºÝ¡AµM«á³Q«È¤áºÝªºeval Åã¥Ü¥X¨Ó¡C
¡@ ¡@¾ãÓ¹Lµ{«D±`¥©§®¡A³o´X¥G¬OASP.NET __doPostBack ªº"Hook ASP.NET"ª©©M¥[±jª©¥»¡C¦ÓHttpModel ¥Dn¬O¬°¤F¸Ñ¨MSession©M¥æ¤e´£¥æ¡A¶i¦æ«È¤áºÝJavascriptªº¾ã²z©Mµù¤J¡A·íµM¤]¬O³oùرµ¦¬«È¤áºÝªº½Ð¨D¡A¦b Application_EndRequest¤¤ªð¦^µ²ªG¡C³Ñ¤Uªº¥N½X³£¬O³B²z±±¥ó¦bVS Web Design¤¤ªº³]p®É¤ä«ù¡CAjaxCallObject.js ©MWebParts.js ¨C¦¸³£n¶Ç¨ì«È¤áºÝ¡C
¡@¡@MagicAjax.NET ªº¤@¨Ç¤£¨¬©M·Qªk¡G
¡@¡@1¡B__doPostBack ªº¥[±jª©¡A¾A¦X©óASP.NETªº°ª¯Å¥Î¤á¨Ï¥Î
¡@¡@2¡B¥Ñ©ó©MASP.NETªº¶±³B²z¾÷¨î¨Ì¿à«D±`±K¤Á¡A±±¥óªºÀq»{°Ê§@µo¥ÍÅܤƫh¥i¯à¤£¤u§@¡A¤ñ¦p²Ä¤T¤èªº¬YÓ¦Û©w¸q±±¥ó¡F
¡@¡@3¡B¨Ì¿àViewState ¡A¦pªG¬O¥[±KªºViewState¡A«h¥i¯à¤u§@¤£¥¿±`¡A§Ú¨S¦³¸Õ¡A¦b¥N½X¤¤¦n¹³¨S¦³¬Ý¨£__VIEWSTATEENCRYPTED
¡@¡@4¡B¬O¹ïASP.NET ¥þ³¡¶±´£¥æªºÀu¤Æ¡A¹ê²{¦³ªºAjax¥\¯à¡A¥iÂX®i©Ê¤£¤j
¦pªG¬O°ò©óASP.NET ´£¨Ñªº±±¥ó©M¶}µo¡A¨º麽MagicAjax.NET ¬O«D±`¦³®Äªº¡A«Ü¦nªº¸Ñ¨M¤FSession©M¸ó¶±ª¬ºAªº°ÝÃD¡C¦Ó¥B«È¤áºÝªº¾Þ§@©M¤u§@°ò¥»¥i¥H©¿²¤¡AMagicAjax.NET³]p¶Kªñ³Ìªñªº ASP.NETªºª©¥»¡A¥Ø«e¤£´£¨Ñ½Õ¥Î«È¤áºÝª½±µ½Õ¥Î¶±ªº¤èªk¡C¦ýÀHµÛ¨äµo®i¡AÀu¶Õ¥i¯àº¥¤Ö¡A¦]¬°Atlas ³Ì·sªºª©¥»´£¨ÑÃþ¦üªºUpdatePanel ±±¥ó¡C
2.1 Ajax.NET Professional
¡@¡@§Ú¨S¦³¬Ý¹LAjax.NET Professional ªº·½¥N½X¡A¦ý±q¨Ò¤l¤¤¬Ý±o¨ä¤ä«ù½Õ¥Î¶±ªº¬YÓ¤èªk¡A¥H¤Îªð¦^¹ï¶H¡ADataSet¡ADataTableªº¼Æ¾Ú¡A§Ú»{¬°Ajax.NET Professional ªº¹ê²{©MAnthem.NET ì²z¬O¤@¼Ëªº¡AÁöµMAjax.NET Professional ¨Ï¥Î¤FHTTP Model¡A³oÓ¥u¬O©MAnthem.NET ¤@¼Ë¡A³Ì²×³B²zµ²ªGªºªð¦^³B²z¤Wµy¦³¤£¦P¤£¦P¡C¤ñ¸û°_¨Ó¡AAjax.NET Professional ¨S¦³«·sÄ~©Ó©Ò¦³±`¥ÎªºASP.NET±±¥ó¹ê²{³¡¤À´£¥æªº¥\¯à¡A©Ò¥H¥i¯àAjax.NET Professional ¤ñ¸û±j¶µªº¬O½Õ¥Î¶±¤Wªº¬YÓ¤èªk¡A¨Ã¦b«È¤áºÝÀò±oµ²ªGªº¼Æ¾Ú¡A³oÓ¤w¸g°÷¹ê²{¤j³¡¤ÀªºAjaxªº¥\¯à¤F¡C
¡@¡@±q³oÓ¼h±¤W¬Ý¡A§Ú»{¬° Ajax.NET Professional ¬O¬Û¹ï²Â«©M´_Âø¤F¡CAnthem.NET¤£¨Ï¥ÎHTTP Model¡A´£¨Ñ±±¥ó°ò¥»ªº§½³¡´£¥æ¡A¤]´£¨Ñ¼Æ¾Ú¼h±ªº«È¤áºÝ¤èªk½Õ¥Î¡CAjax.NET Professional ªº·½¥N½X¦ü¥GÁ`¬O¤£·Q¦@¨É ¡A³o¤]¬O§Ú¤£³ßÅw¥¦ªº¥t¥~¤@Óì¦]¡C
µL½×¦p¦ó¡A¤j®a³£¨S¦³´£¨Ñ¨â¸ôªº¼Æ¾Ú¥æ´«¡A§Y«È¤áºÝ¥i¥HÀò±oªA°È¾¹ºÝªº¤èªk¨ÃÀò±oµ²ªG©M¼Æ¾Ú¡A¦ý¬O¥Ø«e³£¤ä«ù±N³o¨Ç¹ï¶H/¼Æ¾Úק蠟«áªð¦^µ¹ªA°È¾¹ºÝ¡C
¡@¡@Anthem.NET ªº¤@¨Ç¤£¨¬©M·Qªk¡G
¡@¡@1) Anthem.NET ¤]¬O¤@ºØ"Hook ASP.NET"ì²z¡A¦®¦bÀ±¸ÉASP.NETªº¾ã¶±ªº´£¥æ©MPostBack¡A¨Ã¥B¦b«È¤áºÝªº¼Æ¾Ú³X°Ý©M¥æ¤¬¤W°µ¤F¥[±j¡C
¡@¡@2) Anthem.NET»Ýn«·s±NASP.NET´£¨Ñªº±±¥ó¶i¦æÄ~©Ó©M¥]¸Ë¡A©Ò¥H¨Ï¥Î©M¥\¯àªºÝ®e©Ê¤W«D±`±Ó·P¡C
¡@¡@3) ¤]³\·L³n¤UÓª©¥»ªºASP.NETªº¼Ð·Ç±±¥ó¥i¥HÉųAnthem.NETªº°µªk¡Aµ¹¦UÓ±±¥ó¼W¥[³oÓ»·µ{¦^½Õªº±µ¤f¡C
¡@¡@4) ¥Ø«eª©¥»ªº¥\¯à¤w¸g«D±`±j¤j©M²¤¦³¨Ç´_Âø¤F¡A¦Ó¥B³¡¸p¤ñ¸û¤è«K¡AµL»Ý³]¸mHTTP Model¡C
¡@¡@3. wwHoverPanel AJAX Control for ASP.NET
¡@¡@wwHoverPanel AJAX Control for ASP.NET ³o¤]¬O¤@ÓASP.NETªº±±¥ó¡A¦ý¬O´£¨Ñ¤F«È¤áºÝ¦^½Õ(°ª¯Å¦^½Õ)¡B«È¤áºÝ½Õ¥Î¶±¤èªk¡A¥H¤ÎÂù¦V¨â¸ôªº§Ç¦C¤Æ¥\¯à¡C
¡@¡@wwHoverPanel §l¨ú¤FMagicAjax.NET ©M Anthem.NETªºÀuÂI¡A¦P®É¤Sµ²¦X¤FASP.NETªº«È¤áºÝ¦^½Õ¥\¯à¡A¬O¤@Ó»´¶q¯ÅªºAjax²Õ¥ó¡C
¡@ ¡@¬Ý«ÝwwHoverPanel ³Ì¤jªº¨âÓ¯S©Ê¤¤ªº¤@Ó¬O¥Î«Ü²³æªº¤è¦¡¹ê²{¤F¤@ÓHoverPanel Behavior¡A³oÓ¹ê²{¤ñ¥Ø«eAtalasªºBehavior n²³æ¡A§@ªÌRick Strahl ¤]±j½Õ³oÓ¥Dn¬Oµ²¦X¥L¨ãÅ骺À³¥Î¡A¤ñ¦p³oùØ´£¨Ñ¤F¤@Ó¤pªºHTMLªO¡A¥i¥HÅã¥ÜÀò±oªºµ²ªG«H®§¡C
¡@¡@wwHoverPanel ¤]´£¨Ñ¤@Ó§½³¡¦^½Õªº¤èªk¡A¦ý¬O³oÂIªº¹ê²{¤W©MMagicAjax.NET ¥H¤Î Anthem.NET§¹¥þ¤£¦P¡A¥¦¬O¨Ï¥Î¤@ÓStartCallbackªºJavascript¨Ó²Õ¦X¬d¸ß¦r²Å¦ê´£¥æ¨Ã¥B¨Ï¥ÎXMLHTTPµo½Ð¨D¨ìªA°È ¾¹ªº¬YÓ¶±(¥ÑServerUrl Äݩʫü©w)¡A¤§«á³oÓ¶±±Nµ²ªG¥HResponse.Write()ªºì¥ÍHTML¤º®eªð¦^¡C³oÓ©MASP.NETªº¦^½Õ¤èªk«D±`Ãþ¦ü¡A¦Ó¥BÁÙ¤ä«ù±N½Ð¨D µo¨ì¥»¶¤§¥~ªºASP.NET¨ÃÀò±oµ²ªG¡A©Ò¥H¥¦¼W±j¤Fì¨ÓASP.NETªº«È¤áºÝ¦^½Õªº¤èªk¡A§Y¤ä«ù¨ä¥¦¶±ªº¦^½Õ¡C¥i¥H»¡¡A³o¬O¤@ºØ°ò©óURLªº«È¤á ºÝ¦^½Õ¡C
¡@¡@wwHoverPanel ´£¨Ñªº²Ä¤GÓ¥\¯à¬O¡A«È¤áºÝ¥i¥H½Õ¥ÎªA°È¾¹ºÝ¤¤ªº¬YÓ¶±ªº¤èªk(³o¨Ç¤èªk¥H[CallbackMethod]¶i¦æ¼ÐÃÑ)¡A³oºØ±¡ªp¤U¡A§An³]¸m EventHandlerMode="CallPageMethod" ¡AµM«á¨Ï¥ÎwwHoverPanel.ªA°È¾¹¤èªk¦W(°Ñ¼Æ¡A°Ñ¼Æ¡A...¡A¦^½Õ³B²z¨ç¼Æ)ªº¤è¦¡¶i¦æ½Õ¥Î¡C³oÓ¨ä¹ê¨Ï¥Îªº¬O¤@ÓJavascriptªº CallMethod ¤èªk¡A½Õ¥ÎªA°È¾¹ºÝªº½Ð¨D¡CJavascript ªºHandleCallback «h¥Î¨Ó³B²zªð¦^ªºµ²ªG¡AÅÞ¿è¬Û¹ï²³æ¡AºÉºÞ±±¥óªºinnerHTML ¤]³Q½áÈ¡A¦ý³oÓ¥Dn¬O¬°¤FºûÅ@§@¬°«È¤áºÝ¦^½Õµ²ªGÅã¥Üªº¤pªºHTMLªOªº¤º®e¡A§_«h´N¬O½Õ¥Î¶±¤¤ªº¤èªk¤F¡A¨º麽µ²ªG´Nª½±µµ¹«È¤áºÝªº¦^½Õ¤èªk¤F¡C
¡@ ¡@¯S¦â¤T¡A´N¬O§Ú»¡ªºÂù¸ôªº§Ç¦C¤Æ¥\¯à¤F¡A¨ä¹ê³oÓ³õ´º§Ṳ́]«D±`»Ýn¡A¤ñ¦p§Ú̥ΫȤáºÝ¦^½Õ©ÎXMLHTTP½Ð¨DÀò±o¤F¤@Ó©w³æ¹ï¶H¡A¨º麽«È¤áºÝק蠟 «á¡A§ÚÁÙ·Q§â¥¦§@¬°¤@ӫȤáºÝ½Õ¥Îªº¿é¤J°Ñ¼Æ¡Aªð¦^¨ìªA°È¾¹ºÝ¡C³o®ÉÔ¨â¸ôÂù¦Vªº§Ç¦C¤Æ´N»Ýn¤F¡A¦]¬°³o¦¸ªA°È¾¹»Ýn±NJavascriptªº¨ç¼Æ¶Ç¤Fªº ¼Æ¾Ú§Ç¦C¤Æ¦¨.NETªºÃþ¡C³o¤]´N¬OJSONªºÂù¦V§Ç¦C¤Æ¤F(¥Dn¥N½X¦bJSONSerializer.cs )¡A³o¤]¬O§Ú®¼³ßÅwªº¤@Ó¥\¯à¡A¦]¬°§Ú¹ï³oÓ¥\¯àÃöµù«Ü¤[¡A¦ý¬O¥Ø«e¬y¦æªºAjax-NETªº®Ø¬[³£¤£¤ä«ù³oÓ¥\¯à¡C
¡@2. Anthem.NET
¡@¡@¥Ø«e¬O1.0ª©¥»¡A¨ä³]p²z©À¬O³q¹L¥t¥~¤@Ó«ä¸ô¡A¿í´`³o¼Ëªº²z©À--¬JµMASP.NETªº¦UӼзDZ±¥ó¨S¦³¹ê²{´£¥æ¥\¯à¡A¨º麽§Ú¥i¥H²£¥Í¤@Ó´£¥æªº±µ¤f¡AµM«áÄ~©Óì¨Óªº¼Ð·Ç±±¥ó¡AµM«á¦A¹ê²{³oÓ±µ¤f¡A³o¼Ë¨CÓ±±¥ó³£¥i¥H¦VªA°È¾¹ºÝ³æ¿W¶i¦æ´£¥æ¡C
¡@ ¡@¨CÓ±±¥óªºµo¥Í¹Lµ{Ãþ¦üMagicAjax.NET¡AAnthem.NET´£¨Ñ¤F¦UÓ±±¥óJavascriptºÝªº´£¥æ¨ç¼Æ¡Ð³oµ¥©ó¤]ºI¨ú¤F __doPostBack¡A¤§«áAnthem.NET ÁÙ´£¨Ñ¤F§¹µ½ªº«È¤áºÝªº¨Æ¥ó¤ñ¦pPostCallBack ©MPreCallBack ³o¼Ëªº«È¤áºÝ¨Æ¥ó¡A¤§«á¤]±N¨Ï¥ÎXMLHttpRequest ¼ÒÀÀ¤@ӶDzΪº¶±´£¥æ½Ð¨D¨ìªA°È¾¹ºÝ¡AªA°È¾¹ºÝ¥Í¦¨¶±¹ê¨Ò¡A³oÓ¹Lµ{©MMagicAjax.NET¤@¼Ë¡A³Ì«á¬O±NRenderedªºHTML¦b±±¥óªº Render() ¨Æ¥ó¶Ç¦^¨ì«È¤áºÝ¡A«È¤áºÝ±±¥óªºinnerHTML³Q½áÈ¡A°ÊºA§ó·s¡C
¡@¡@©MMagicAjax.NET¤£¦Pªº¬O¡A Anthem.NET¨S¦³®e¾¹ªº·§©À¡A¦]¬°¨CÓ±±¥ó³£¼W¥[¤F´£¥æ±µ¤f¡A©Ò¥H¥i¥H³æ¿Wªº´£¥æ¡A©Ò¥H³æ¦ì¬O¥H¤@Ó±±¥ó¬°³æ¦ì¶i¦æ¤@¦¸´£¥æ¡A Anthem.NETªºªá¶O§ó¤p¨Ç(¦ýªA°È¾¹ºÝ¬OÃþ¦üªº¡A¦]¬°¾ãÓASP.NET¶±ªºPipeline³£·|¶i¦æ)¡C
¡@¡@¦¹¥~¡A Anthem.NET ÁÙ¦³¥t¥~ªº¥\¯à¡A´N¬O¥i¥H³q¹L«È¤áºÝ½Õ¥Î¶±¤¤ªº¤èªk¨ÃÀò±oµ²ªG/¼Æ¾Ú¡A³oºØ±¡ªp¤U¡A§A±N½Õ¥ÎAnthem_InvokePageMethod ¤èªk¡A¦Ó¤£¬OAnthem.NET´£¨ÑªºÀq»{¦UÓ±±¥óªº´£¥æ¤èªk¡C³o¼ËJavascriptªº¦^½Õ³B²z¨ç¼Æ¤¤ªºresult.value ±N¥i¥HÀò±o½Õ¥ÎªºªA°ÈºÝªº¬YÓ¤èªk(¸Ó¤èªk¥H[Anthem.Method]¬°¼Ð°O)ªº°õ¦æµ²ªG¡A¦]¬°JavascriptPostªº¼Æ¾Ú¤¤¦³ Page/MasterPage/Control ¤F¡A¨º麽ªA°È¾¹ºÝ«Ü®e©ö³q¹L³oÓ¼ÐÃÑÀò±o¤èªkªº¦a§}¡AÀ³¥Î¤Ï®g´M§ä[Anthem.Method]¼Ð°O¡AµM«á½Õ¥Î¡A±Nµ²ªGªð¦^¨ì«È¤áºÝ¡C
¡@ ¡@Anthem.NET¤ä«ùªð¦^¹ï¶H¡ADataSet¡ADataTable©M WriteDataRow(WriteDataSet,WriteDataTable,WriteDataRow,WriteObject)¡Aªð¦^ªº¬O²Å ¦X¬OJSON³W½dªº¦r²Å¦ê¡A³o¼Ë«È¤áºÝªºJavascript´N¥i¥H¨Ï¥Î³o¨Ç¹ï¶H¤F¡C¤£¦P©óMagicAjax.NET¡AAnthem.NET ¨S¦³¨Ï¥ÎHTTP Model¡A©Ò¥Hµ²ªG¬O¦b¶±ªºPreRender() ¨Æ¥ó¤¤³B²z©Mªð¦^½Ð¨Dªºµ²ªG¡C
¡@¥Ø«e¦bwwHoverPanel ªº³õ´º¤¤¡A§Ú»{¬°³o¬O¤@ºØ»´¶q¯Åªº¹ê²{¡A¹ï©ó¦h¼h´O®M¦h²Õ¤Þ¥Îªº¹ï¶H¹ÏÃþ«¬©Î¬O¤j³W¼Ò®e¶q³X°ÝÀ£¤O¤U¡A«È¤áºÝ©MªA°È¾¹ºÝ³£ÁÙ»ÝnÀu¤Æ¡A©Ò¥H¦pªG¨ä§@¬°Ajax¬[ºc¡A«È¤áºÝ©MªA°È¾¹ºÝ³q«H©M¶Ç»¼¼Æ¾Úªº³q°T¼h¤W¡AÅãµM¬O¦³¨Ç³æÁ¡¤F¡C
¡@¡@wwHoverPanel ªº¤@¨Ç¤£¨¬©M·Qªk¡G
¡@¡@1) ¸Ó±±¥ó¬O¥Ø«e§Ú¨£¹L.NET¥»O¤U¡A±©¤@¦P®É¤ä«ù«È¤áºÝ¦^½Õ©M¶±¤èªk½Õ¥ÎªºAjax ±±¥ó¡A¦P®É¤S¤ä«ù¨â¸ôÂù¦Vªº§Ç¦C¤Æ¡C
¡@¡@2) ¬Û¹ï¨Ó»¡¡AwwHoverPanel¬O³]p³Ì²³æªº¤@Ó¡A¦Ó¥B¬O°ò©ó±±¥ó¤£¨Ì¿àHTTP Model©MASP.NET Page Pipeline¡A¤]¤£¨Ì¿àViewState
¡@¡@3) ¸Ó±±¥ó¯à°÷Åý§A¦bAjax¯S©Ê¹ê²{ªº§Þ³N¼h±¤W¡A¯à°÷¦b«È¤á¦^½Õ©M«È¤áºÝ½Õ¥Î¶±¤èªk¨âªÌ¤¤¨ú±o¥¿Å¡C
¡@¡@4) ¥Ø«eªº«È¤áºÝ¦^½Õ¤ä«ù¨ä¥¦¶±ªº¦^½Õ¡A¦ý¬O¨äµ²ªG¿é¥X»Ýn¿é¥Xì©lªºHTML¡A³oÓ¼vÅTÀ³¥Îªº¤À¼h©M³]p¡C
¡@¡@5) JSONªºÂù¦V§Ç¦C¤Æ¬O¤@Ó¤£¿ùªº¤è®×¡A¦ý°ª©Ê¯àªº³õ´º¤U¡AÀ³¸Ó¦Ò¼{¹ê²{§ó°ª®Äªº§Ç¦C¤Æ®Ø¬[
¡@¡@4. Atlas
¡@¡@³oÓ²£«~¡A§Ú´N¤£¦CÁ|¨ãÅ骺¥\¯à¤F¡A¦Ó¥Dn»¡¤@¤U§Ú¹ï¨äªº¬Ýªk©M«ù¦³ªººA«×¡C¦]¬°¦b§ÚªºAjax®Ñµû¤¤´£¨ì¹L°ÝÃD¡C
¡@¡@Atlas ¬O¤@ÓÓ©ÊÂA©úªº²£«~¡A¨äÀuÂI¬O©úÅ㪺¡A¯ÊÂI¤]¬O©úÅ㪺¡A¦ýº¥ý§A¥²¶·»{ÃѨ쥦ÁÙ¬O¤@Ó¤ñ¸û´_Âø¡A¾Ö¦³¸û°ª¾Ç²ß¦±½uªº¸Ñ¨M¤è®×¡C¹ï©ó¨ä´_Âø©Ê¡A¦Ñ¹ê»¡¥Ø«e¡A¤j¦h¼Æ¤HÁٯʥF¯u¹êªº·P¨ü¡C
¡@¡@³Ìªñªº¤@ÓÓª©¥»-Jan CTP¡A§Ú̬ݨì¤F¤@¨Ç¯S©Ê¡A¨ä±j¤j¤§³B¦b©ó¡G
¡@¡@1.«È¤áºÝ(Javascript)ªº¼Æ¾Ú¸j©w¡B®ÕÅç±a¨Ó«K§Q¡C
¡@¡@2. ·sªºUpdate Panels¤£¶È¾Ö¦³¤FMagicAjax.NET ªº¯S©Ê¡A¦Ó¥B¥\¯à§ó±j¡A¬O¥Ø«eAtlas¤¤²§¨B¦^½Õªº¥Dn±±¥ó¡C
¡@¡@3.¤º¸m¤F¤@¨Ç¨ãÅéAjax¯S©Êªº±±¥ó¡A¤ñ¦pAutoCompleteExtender ¡ADragOverlayExtender
¡@¡@4. ´£¨Ñ¤F¤@¨Ç¨Ï¥Îªº±±¥ó¤ñ¦p¡AScriptManager, Triggers ,TimerControl
¡@¡@5. ¥Dn¥Î³~µÛ«¦b´£¨Ñ¤@ӫȤáºÝ±±¥ó©MªA°È¾¹ºÝ±±¥óªº¯S©Ê¶°¦¨ªº¤è®×©M®e©ö¨Ï¥Îªº¶}µo®Ä²v¤W¡C
¡@¡@¦ý¯ÊÂI¤]¬O©úÅ㪺¡A¤ñ¦p¡G
¡@¡@1. «È¤áºÝªºBehaviorsÁÙ«Ü®z¡A¼ÒªO(Templates)©MUI¼W±j(UI Enhancements)¥\¯àÁÙ¨S¦³¬Ý¨ì¡C
¡@ ¡@2. ©Ò¿×ªº«È¤áºÝAtlas±±¥ó(¡§Atlas¡¨ Client Controls)©MªA°È¾¹ºÝªºAtlas±±¥ó(¡§Atlas¡¨ Server Controls) ÁÙ¨S¦³¤@Ó©ú½Tªº³W½d¡A©Ò¥H²{¦b§A°ò¥»¤WÁÙ¤£¯à³Ð«Ø¦Û©w¸qªºAtlas±±¥ó(µL½×«È¤áºÝÁÙ¬OªA°È¾¹ºÝªº)¡C
¡@¡@3. ¥Ø«eÁÙ¥u¤ä«ù½Õ¥ÎWeb ServicesªºªA°È¡A¹ï©óASP.NETªº¤º¸mªºªA°È¥H¤ÎWCFªºªA°È¤ä«ù¤]¨S¦³¬Ý¨£¡A¤]¤£¤ä«ù¶±©Î±±¥ó¤ºªº¤èªk½Õ¥Î
¡@¡@4. ¥\¯à¤WÁÙ¤£Ã©w¡A¤@¨Ç¥\¯à¶È¬O¦b¯S©w±ø¥ó¤Uªº¯S©Ê¹ê²{¡AÁÙ¤£¯àº¡¨¬³¡¸p¥Í²£Àô¹Òªºn¨D¡C§Ú»{¬°¡A¦pªGAtlasµo¥¬Go-Live License¡A¨º麽¥i¥H¦Ò¼{Atlasªº©ñ¤J¨ì¥¿¦¡ªº¶µ¥Ø©ÎÀ³¥Î¤¤¡C
¡@ ¡@§Ú¨Ã¤£«ØÄ³¡A§A²{¦b´N±N¥¦À³¥Î¦b¤@ӦѪºASP.NET ¶µ¥Ø¤¤¡A©Î¬O¦Ñ¶µ¥Ø¾E²¾¨ìASP.NET v2.0®ÉÀu¥ý¦Ò¼{¥¦¡F§ó¦h®ÉÔ¡A¦pªG§A¬O³Ð«Ø¤@Ó·sªºASP.NETÀ³¥Î¡A¦Ó¤S¸ó¶V¤F¨ä¾Ç²ß¦±½uªº±¡ªp¤U¡A¥i¥H¦Ò¼{¨Ï¥Î¥¦¡C¥Ø«eªº±¡ªp¤U¡A¹ï©ó Atlas¡A§Ú«ØÄ³¡A§AÀ³¸Ó«O«ù¨¬°÷ªºÃöµù©M¹ê½î¾Ç²ß¡A¦ý¬On§í¨î¦í±N¨äÀ³¥Î¨ì¶µ¥Ø¤¤ªº¿³½ì¡F¦]¬°Ajax¡A§A²{¦b¥i¥H¶}©lÃöµù©M¾Ç²ß¥¦¡A¦ý¬O§A¤£¯à¦]¬° n¹ê²{Ajax¤@Ó¯S©Ê¡A¦Ó¥ß§Y¿ï¾ÜAtlas¡A¨º麽¬O¥i¯à¦³·ÀIªº¡C
¡@¡@µù¡G Atals ªºMicrosoft.Web.Script.Serialization ©R¦WªÅ¶¡¤¤¦³JavaScriptObjectDeserializer©MJavaScriptObjectSerializer¨âÓ¹ï¶H¡A²Ä¤@¡A§Ú¤£½T ©w¨ä¬O§_¤]¬OJSON §Ç¦C¤Æ¡A¦Ó¥B§Ú¤]¤£½T©w¥Ø«e¬O§_¤ä«ù¨â¸ôÂù¦Vªº§Ç¦C¤Æ¡F²Ä¤G¡A¥Ø«eªºª©¥»¡A§ÚÁÙ¤£¯à¶i¦æ¦Û©w¸q©ÎÂX®i¡A¦P®É¤]«ÜÃø¹ï©ó¨ä©Ê¯à°µ¥ô¦óªºµ²½× ¡C
¹ê¥Î¬ÛÃö·j´M: lfo av car °Q½× ª¯ cat it pda ati eva