<?xml-stylesheet type="text/xsl" href="/rss.xsl" media="screen"?><rss version="2.0"><channel><title>softlogger Latest Articles ::AJAX</title><link>http://softlogger.com</link><description>softlogger Latest Articles ::AJAX</description><ttl>180</ttl><item><title>Data bound fields for Ajax forms</title><link>http://softlogger.com/18646/AJAX/data-bound-fields-for-ajax-forms.aspx</link><description>&lt;p&gt;An overview of the Ajax forms implementation of the AjaxEngine framework has already been published some days ago at &lt;a title="http://ajaxaspects.blogspot.com/2007/12/using-openajax-events-for-building-data.html" href="http://ajaxaspects.blogspot.com/2007/12/using-openajax-events-for-building-data.html"&gt;http://ajaxaspects.blogspot.com/2007/12/using-openajax-events-for-building-data.html&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Here are more details of the concept around binding html elements to Open Ajax events.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Client side API for data bound elements&lt;/h2&gt; &lt;p&gt;The API for the data controls is unified as far as possible and for all the data controls the following common features are implemented:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;element.eventname&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;If this attribute is set the the element will listen to and possibly publish an OpenAjax hub event to exchange the changed value through the eventing mechanism. If the value of the eventname attribute does not contain a full namespace but only the local name of the event, the eventnamespace attribute of any parent element is used to complete the namespace. This may be in many cases the surrounding DataFormBehavior element.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;strong&gt;element&lt;/strong&gt;.datatype&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;This attribute can be set to the name of the datatype of the values. This enables some datatype specific behavior implementation within the element for example converting the non-string datatypes to the specific notation. If this attribute is not set then the exchanged data will is used without any special formatting conversions and no other restrictions are applied. Just like a string type.&lt;/p&gt; &lt;p&gt;This attribute should not be changed by JavaScript. Use the setDatatype(type) method in the case you need that.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;strong&gt;element&lt;/strong&gt;.setData(newValue)&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;This method is available to set the value of the control directly by using JavaScript. This method is also used internally for all cases when the value of the control has to change. This method can be overwritten by other, derived controls.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;strong&gt;element&lt;/strong&gt;.getData()&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;This method is available to JavaScript implementations that need to access the value of a (input) field directly. Don't use the innerText or value attributes of an HTML element directly because there may be type conversion and/or translations necessary that are executed for your convenience when using this method.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;strong&gt;element&lt;/strong&gt;.setDatatype(newType)&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;When the datatype of an data item is not known when loading the page and by using the datatype attribute this method can be to pass the new datatype.&lt;/p&gt; &lt;p&gt;All the values that are exchanged between the Ajax form element and the inner data controls are using the format defined by the XML datatypes (here simply called the standard format) . This implies that the inner data controls have to take care about converting the values into some more useful formats and that the Ajax form and more important the server doesn't have to care about these specific formats.&lt;/p&gt; &lt;p&gt;There is also another way how values can be exchanged among different controls that is the OpenAjax event mechanism. Every time the Ajax form gets a new dataset is also published all the values by using the eventnamespace of the Ajax form. OpenAjax events are also used to sync the inner data controls that all deal with the same data item.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;name attribute&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;This attribute of an inner element is &lt;strong&gt;not &lt;/strong&gt;used. Using this attribute is heavily used by the classic HTML form mechanism. This still allows "hybrid" web pages where the user gets some advice and aid by using AJAX calls to the server but where the form.submit functionality is still used for the real processing of the data of the form.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Data bound elements and behaviors&lt;/h2&gt; &lt;h3&gt;DataOutput Controls&lt;/h3&gt; &lt;p&gt;If you have data items that come from the server an that will not be changed by the user you can use the DataOutput control. The DataOutput Behavior only registers for the appropriate event that is specified through the eventname attribute and displays all published values inside the control.&lt;/p&gt; &lt;p&gt;The implementation uses a &amp;lt;span&amp;gt; element for displaying the values but other Controls that derive from DataOutput can also use different element eventually by overwriting the setData method. The setData method can also be used to display values when implementing directly with JavaScript.&lt;/p&gt; &lt;p&gt;It also takes care of the datatype attribute. If this attribute is set the given value in the standard format will then be converted into the national language specific notation within the setData method by using the &lt;strong&gt;nls&lt;/strong&gt; object that will be described later.&lt;/p&gt; &lt;p&gt;The reference documentation can be found at&lt;/p&gt; &lt;p&gt;&lt;a title="http://localhost:50959/AJAXEngine/documentation/ViewDoc.aspx?file=~/controls/DataFade.js" href="http://www.mathertel.de/AJAXEngine/documentation/ViewDoc.aspx?file=~/controls/DataOutput.js"&gt;http://www.mathertel.de/AJAXEngine/documentation/ViewDoc.aspx?file=~/controls/DataOutput.js&lt;/a&gt;&lt;/p&gt; &lt;h3&gt;DataInput Controls&lt;/h3&gt; &lt;p&gt;The DataInput component is a general purpose JavaScript Behavior based control that implements the functionality for binding a regular &amp;lt;input&amp;gt; element to OpenAjax events for building Ajax forms.&lt;/p&gt; &lt;p&gt;The implementation takes also care of the datatype in a special way by using the implementation of datatype specific functionality that are available through the &lt;strong&gt;nls&lt;/strong&gt; object that will be described in a later article in detail.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;When a key is pressed the keyCode / charCode of the pressed key is identified and only valid characters are passed. This allows to keep unwanted characters away from the field value in many cases. However it is possible to paste any character by using the clipboard so do not trust this tiny filter. It's only implemented to assist - not to prevent.  &lt;li&gt;If a datatype is given, the XML values will be converted into the national language specific notation within the setData method or when an OpenAjax event with the appropriate eventname was published.  &lt;li&gt;If a datatype is given, the national language specific notation of the input value will be converted back into the the XML value that is used on the server site within the getData method.  &lt;li&gt;It the data is changed and the cursor leaves the field or the &amp;lt;enter&amp;gt; key is pressed, an OpenAjax event will be published using the standard format.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;You can build more specific components based on this JavaScript Behavior by deriving from this implementation and adding some special features.&lt;/p&gt; &lt;p&gt;The reference documentation can be found at&lt;/p&gt; &lt;p&gt;&lt;a title="http://localhost:50959/AJAXEngine/documentation/ViewDoc.aspx?file=~/controls/DataFade.js" href="http://www.mathertel.de/AJAXEngine/documentation/ViewDoc.aspx?file=~/controls/DataInput.js"&gt;http://www.mathertel.de/AJAXEngine/documentation/ViewDoc.aspx?file=~/controls/DataInput.js&lt;/a&gt;&lt;/p&gt; &lt;h3&gt;The DataFade control&lt;/h3&gt; &lt;p&gt;The DataFade Behavior implementation inherits from the DataOutput implementation and adds the Fade effect. Every time a new value is set into this element the background becomes yellow and is then smoothly fading to the original background color to attract the users attention.&lt;/p&gt; &lt;p&gt;A sample page for this effect can be found at&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.mathertel.de/AJAXEngine/S04_VisualEffects/FadeDemo.aspx"&gt;http://www.mathertel.de/AJAXEngine/S04_VisualEffects/FadeDemo.aspx&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;The reference documentation can be found at&lt;/p&gt; &lt;p&gt;&lt;a title="http://localhost:50959/AJAXEngine/documentation/ViewDoc.aspx?file=~/controls/DataFade.js" href="http://www.mathertel.de/AJAXEngine/documentation/ViewDoc.aspx?file=~/controls/DataFade.js"&gt;http://www.mathertel.de/AJAXEngine/documentation/ViewDoc.aspx?file=~/controls/DataFade.js&lt;/a&gt;&lt;/p&gt;  &lt;img alt="via softlogger.com" src="http://softlogger.com/postview.aspx?ArticleID=18646"&gt;</description><author>Aspects of AJAX</author><pubDate>2008-01-30T00:00:00</pubDate><category>AJAX</category></item><item><title>New Video:  Integrating Silverlight and ASP.NET AJAX</title><link>http://softlogger.com/18213/AJAX/new-video--integrating-silverlight-and-asp-net-ajax.aspx</link><description>&lt;P mce_keep="true"&gt;I gave a talk at &lt;A class=" " title="Desert Code Camp" href="http://www.desertcodecamp.com/" target=_blank mce_href="http://www.desertcodecamp.com"&gt;Desert Code Camp&lt;/A&gt; toward the end of 2007 that discussed how Microsoft's &lt;A class=" " href="http://www.silverlight.net/" target=_blank mce_href="http://www.silverlight.net"&gt;Silverlight&lt;/A&gt; product could be integrated with ASP.NET AJAX to dynamically display albums obtained from an Amazon.com Web Service.&amp;nbsp; It's taken awhile to get the video posted, but it's now available.&amp;nbsp; The audio in the room wasn't great since no microphone was used&amp;nbsp;so you may need to crank it up a bit.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Slides and code shown in the video can be downloaded below:&lt;/P&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A class=" " href="http://www.xmlforasp.net/CodeBank/Download/Blog/AlbumViewer.zip" mce_href="http://www.xmlforasp.net/CodeBank/Download/Blog/AlbumViewer.zip"&gt;Code Download&lt;/A&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A class=" " href="http://www.xmlforasp.net/CodeBank/Download/Blog/Integrating%20Silverlight%20with%20ASP.NET%20AJAX.ppt" target=_blank mce_href="http://www.xmlforasp.net/CodeBank/Download/Blog/Integrating Silverlight with ASP.NET AJAX.ppt"&gt;PowerPoint Slides Download&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; FONT-FAMILY: arial"&gt;Integrating Silverlight and ASP.NET AJAX (57 minutes)&lt;/SPAN&gt;&lt;BR&gt;
&lt;OBJECT id=mediaPlayer style="OVERFLOW: visible" codeBase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701 type=application/x-oleobject height=480 standby="Loading Microsoft Windows Media Player components..." width=600 classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6&gt;&lt;PARAM NAME="URL" VALUE="http://blip.tv/file/get/Dwahlin-IntegratingSilverlightAndASPNETAJAX355.wmv"&gt;&lt;PARAM NAME="rate" VALUE="1"&gt;&lt;PARAM NAME="balance" VALUE="0"&gt;&lt;PARAM NAME="currentPosition" VALUE="0"&gt;&lt;PARAM NAME="defaultFrame" VALUE=" "&gt;&lt;PARAM NAME="playCount" VALUE="1"&gt;&lt;PARAM NAME="autoStart" VALUE="0"&gt;&lt;PARAM NAME="currentMarker" VALUE="0"&gt;&lt;PARAM NAME="invokeURLs" VALUE="-1"&gt;&lt;PARAM NAME="baseURL" VALUE="http://blip.tv/file/get/"&gt;&lt;PARAM NAME="volume" VALUE="50"&gt;&lt;PARAM NAME="mute" VALUE="0"&gt;&lt;PARAM NAME="uiMode" VALUE="full"&gt;&lt;PARAM NAME="stretchToFit" VALUE="0"&gt;&lt;PARAM NAME="windowlessVideo" VALUE="0"&gt;&lt;PARAM NAME="enabled" VALUE="-1"&gt;&lt;PARAM NAME="enableContextMenu" VALUE="-1"&gt;&lt;PARAM NAME="fullScreen" VALUE="0"&gt;&lt;PARAM NAME="SAMIStyle" VALUE=" "&gt;&lt;PARAM NAME="SAMILang" VALUE=" "&gt;&lt;PARAM NAME="SAMIFilename" VALUE=" "&gt;&lt;PARAM NAME="captioningID" VALUE=" "&gt;&lt;PARAM NAME="enableErrorDialogs" VALUE="0"&gt;&lt;PARAM NAME="_cx" VALUE="15875"&gt;&lt;PARAM NAME="_cy" VALUE="12700"&gt;
                      
&lt;embed id="EmbedmediaPlayer" type="application/x-mplayer2" src="http://blip.tv/file/get/Dwahlin-IntegratingSilverlightAndASPNETAJAX355.wmv" mce_src="http://blip.tv/file/get/Dwahlin-IntegratingSilverlightAndASPNETAJAX355.wmv" width="600" autostart="false" height="480"&gt;   &lt;/embed&gt;&lt;/OBJECT&gt;&lt;BR&gt;&lt;A style="FONT-SIZE: 10pt; FONT-FAMILY: arial; TEXT-DECORATION: none" href="http://blip.tv/file/get/Dwahlin-IntegratingSilverlightAndASPNETAJAX355.wmv" mce_href="http://blip.tv/file/get/Dwahlin-IntegratingSilverlightAndASPNETAJAX355.wmv"&gt;Click here to view in Windows Media Player (right-click and you can save the file)&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5625611" width="1" height="1"&gt;&lt;img alt="via softlogger.com" src="http://softlogger.com/postview.aspx?ArticleID=18213"&gt;</description><author>Dan Wahlins WebLog</author><pubDate>2008-01-20T00:00:00</pubDate><category>AJAX</category></item><item><title>How to... use Class Libraries with ASP.NET AJAX like AjaxPro</title><link>http://softlogger.com/17954/AJAX/how-to--use-class-libraries-with-asp-net-ajax-like-ajaxpro.aspx</link><description>&lt;p&gt;Using &lt;a href="http://www.ajaxpro.info"&gt;Ajax.NET Professional&lt;/a&gt; (AjaxPro) you are able to put you AJAX methods wherever you want, if inside the Page class itself, any .NET class in the same project or as a reference class library. To generate the AJAX client-side JavaScript proxies the AjaxPro library checks for all public methods inside a specified type that are marked with the &lt;em&gt;[AjaxMethod]&lt;/em&gt; attribute. The only thing you have to add to the Page class (in the &lt;em&gt;Page_Load&lt;/em&gt; event) is the call to &lt;em&gt;AjaxPro.Utility.RegisterTypeForAjax(typeof(ClassName))&lt;/em&gt;.&lt;a href="http://www.ajaxpro.info/images/blog/Howto...useClassLibra.NETAJAXlikeAjaxPro_C244/WebApplication1MicrosoftVisualStudio.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" alt="WebApplication1 - Microsoft Visual Studio" src="http://www.ajaxpro.info/images/blog/Howto...useClassLibra.NETAJAXlikeAjaxPro_C244/WebApplication1MicrosoftVisualStudio_thumb.png" width="207" align="right" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://asp.net/ajax"&gt;ASP.NET AJAX&lt;/a&gt; is using a little bit different way, well, not very different. &lt;a href="http://weblogs.asp.net/mschwarz/archive/2008/01/08/how-to-move-from-ajaxpro-to-asp-net-ajax-pagemethods.aspx"&gt;In the Page class you could add PageMethods&lt;/a&gt;. Those PageMethods will be automatically added to the client-side JavaScript proxies when there is a ScriptManager instance available and the EnablePageMethods property is set to true.&lt;/p&gt;  &lt;p&gt;If you would like to build a class library in ASP.NET AJAX you have to write a WebService. &amp;quot;Oh, I don't know much about WebService and it is hard to develop those services!&amp;quot; No, that's not true! The only difference compared to AjaxPro is that you have to inherit from System.Web.Services.WebService and use the &lt;em&gt;[WebMethod]&lt;/em&gt; attribute instead of the &lt;em&gt;[AjaxMethod] &lt;/em&gt;attribute in AjaxPro. The class itself has to be marked with the &lt;em&gt;[ScriptService]&lt;/em&gt; attribute.&lt;/p&gt;  &lt;p&gt;Note: don't forget to add a reference to &lt;em&gt;System.Web.Extensions&lt;/em&gt; and &lt;em&gt;System.Web.Services&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Have a look at the same example as in my last post but using a Class library, now:&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:d5944443-128d-40de-b2e8-2c75c7f8e0d5" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Web.Services;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Web.Script.Services;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.ComponentModel;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000;"&gt; ClassLibrary1
{
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;[WebService(Namespace = &amp;quot;&lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline;"&gt;http://tempuri.org/&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;quot;)]
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;[ToolboxItem(false)]&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    [ScriptService]
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; Class1 : WebService
    {
        [WebMethod]
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; HelloWorld()
        {
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
        }
    }
}
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;The public method didn't change, only a different attribute is used to mark this public method to be accessible from JavaScript later. The class itself has the [ScriptService] attribute as meta information. You need this because ASP.NET AJAX does not call a real web service. Instead it is using JSON and the XmlHttpRequest JavaScript object. To include the JavaScript proxy you have to include the ASMX file with an suffix /js:&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:11de8a37-c403-4908-aca5-619b0c46fa99" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;http:&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;localhost/WebService1.asmx/js&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;But where do you find the &lt;em&gt;WebService1.asmx&lt;/em&gt;? It makes no sense to add a file called WebService1.asmx inside you Class library. What you have to do is to add a new ASMX file in you web application project. The easiest way is to add a new WebService file via &lt;em&gt;Add new item&lt;/em&gt; or to simple add a new text file called &lt;em&gt;WebService1.asmx&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.ajaxpro.info/images/blog/Howto...useClassLibra.NETAJAXlikeAjaxPro_C244/AddNewItemWebApplication1.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="296" alt="Add New Item - WebApplication1" src="http://www.ajaxpro.info/images/blog/Howto...useClassLibra.NETAJAXlikeAjaxPro_C244/AddNewItemWebApplication1_thumb.png" width="480" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;What you have to left inside the file &lt;em&gt;WebService1.asmx&lt;/em&gt; is following content:&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:18e8c621-541f-4625-8131-70fce855c684" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="background-color: #FFFF00; color: #000000;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #000000;"&gt;@ WebService Language&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #000000;"&gt;=&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #800000;"&gt;C#&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #000000;"&gt; Class&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #000000;"&gt;=&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #800000;"&gt;ClassLibrary1.Class1&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #000000;"&gt; &lt;/span&gt;&lt;span style="background-color: #FFFF00; color: #000000;"&gt;%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;Don't forget that you can get rid of all the content in the code-behind source code file. You only need the WebSevice directive and the class name.&lt;/p&gt;

&lt;p&gt;The ASP.NET engine knows now that you want to include the class ClassLibrary1.Class1 into this file. Every requests initiated to this file will be processed from your source code in the Class library. Compare this with the &lt;em&gt;RegisterTypeForAjax&lt;/em&gt; call in &lt;em&gt;Page_Load &lt;/em&gt;when using AjaxPro.&lt;/p&gt;

&lt;p&gt;Now, on the client-side JavaScript code you can use nearly the same JavaScript as with AjaxPro. The only difference is the argument list for the AJAX method and the objects passed to the callback handlers. But comparing those methods to PageMethods you will see that they are built on namespaces where PageMethods are only constructed by the object PageMethods and the name of the method.&lt;/p&gt;

&lt;p&gt;In our example &lt;a href="http://weblogs.asp.net/mschwarz/archive/2008/01/08/how-to-move-from-ajaxpro-to-asp-net-ajax-pagemethods.aspx"&gt;the JavaScript we used in the last post&lt;/a&gt; is very similar. But first we have to include everything we need before. You may remember that ASP.NET AJAX is using a ScriptManager control that will include all the core scripts as well as a reference to the JavaScript client-side proxies. To add a WebService we have to add a &lt;em&gt;ScriptReference&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;
  &lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:8b290f59-b141-449c-8f0c-49c1c7cf1e68" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;asp:ScriptManager &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;ID&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;ScriptManager1&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; runat&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Services&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;asp:ServiceReference &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Path&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;~/WebService1.asmx&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Services&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;asp:ScriptManager&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;The Script reference points to the created WebService1.asmx which itself identifies that it will handle the &lt;em&gt;Class1&lt;/em&gt; in our &lt;em&gt;ClassLibrary1&lt;/em&gt; project. Now you are able to call the methods very similar to AjaxPro and the PageMethods. It looks like a combination of both libraries.&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:b648d64d-5c48-44f7-9167-7daf03442d13" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;script type&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;text/javascript&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt; onSuccess(value, ctx, methodName) {
    alert(value &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
}

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt; onFailed(ex, ctx, methodName) {
    alert(&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Failed.&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
}

window.onload &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;() {
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; ctx &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
    ClassLibrary1.Class1.HelloWorld(onSuccess, onFailed, ctx);
}

&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;script&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;Wow, this was very easy!! And when you know the only difference is in the parameter list for both the AJAX method and the callback handlers you are fine to move to ASP.NET AJAX. Any further questions?&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5575067" width="1" height="1"&gt;&lt;img alt="via softlogger.com" src="http://softlogger.com/postview.aspx?ArticleID=17954"&gt;</description><author>Michael (AJAX.NET) Schwarz                                                                          </author><pubDate>2008-01-09T00:00:00</pubDate><category>AJAX</category></item><item><title>How to... move from AjaxPro to ASP.NET AJAX PageMethods</title><link>http://softlogger.com/17956/AJAX/how-to--move-from-ajaxpro-to-asp-net-ajax-pagemethods.aspx</link><description>&lt;p&gt;In one of my last posts I blogged about the &lt;a href="http://weblogs.asp.net/mschwarz/archive/2008/01/04/future-of-ajax-net-professional.aspx"&gt;future&lt;/a&gt; of &lt;a href="http://www.ajaxpro.info/"&gt;Ajax.NET Professional&lt;/a&gt; (AjaxPro) and that I'm not able to do further development on that project. A&amp;#160; lot of my readers feeling sad about this but I had to concentrate more on new technologies that will revolutionize web application development.&lt;/p&gt;  &lt;p&gt;My recommendation is to move to &lt;a href="http://asp.net/ajax"&gt;ASP.NET AJAX&lt;/a&gt; because it is Microsoft's next generating ASP.NET web application generation and is built in Visual Studio .NET 2008 (and, of course, available as additional feature pack for Visual Studio .NET 2005. Those of you that are still using .NET framework 1.1: please stay developing with AjaxPro...&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ASP.NET AJAX PageMethods in VS.NET 2008&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;When started Visual Studio I start a new &lt;em&gt;WebApplication&lt;/em&gt; project:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.ajaxpro.info/images/blog/Howto...movefromAjaxP.NETAJAXPageMethods_13695/NewProject.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="346" alt="New Project in Visual Studio .NET" src="http://www.ajaxpro.info/images/blog/Howto...movefromAjaxP.NETAJAXPageMethods_13695/NewProject_thumb.png" width="480" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To enable any ASP.NET AJAX feature you need always the &lt;em&gt;ScriptManager&lt;/em&gt; which will be responsible for the ASP.NET AJAX main scripts (in AjaxPro prototype.ashx and core.ashx) as well as the JavaScript that is needed to create the client JavaScript proxies (compared with the on-the-fly generated ASHX files in Ajax.NET Professional).&lt;/p&gt;  &lt;p&gt;You will find the &lt;em&gt;ScriptManager&lt;/em&gt; control in the AJAX Extensions toolbox. Simply drag and drop the control in the default.aspx page.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.ajaxpro.info/images/blog/Howto...movefromAjaxP.NETAJAXPageMethods_13695/WebApplication1MicrosoftVisualStudio.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="699" alt="Visual Studio .NET Toolbox" src="http://www.ajaxpro.info/images/blog/Howto...movefromAjaxP.NETAJAXPageMethods_13695/WebApplication1MicrosoftVisualStudio_thumb.png" width="256" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As this control does not have any UI it will be displayed as a black box in Visual Studio Designer.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.ajaxpro.info/images/blog/Howto...movefromAjaxP.NETAJAXPageMethods_13695/WindowClipping.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="280" alt="ScriptManager" src="http://www.ajaxpro.info/images/blog/Howto...movefromAjaxP.NETAJAXPageMethods_13695/WindowClipping_thumb.png" width="480" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Next we need to setup the &lt;em&gt;ScriptManager&lt;/em&gt;. By default PageMethods are not enabled. To enable PageMethods only one property has to be changed. The property name is &lt;strong&gt;EnablePageMethods&lt;/strong&gt;. You can either configure this property in the property list or in the HTML code itself.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.ajaxpro.info/images/blog/Howto...movefromAjaxP.NETAJAXPageMethods_13695/WindowClipping2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="280" alt="EnablePageMethods" src="http://www.ajaxpro.info/images/blog/Howto...movefromAjaxP.NETAJAXPageMethods_13695/WindowClipping2_thumb.png" width="480" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;That is nearly everything we need to configure in ASP.NET AJAX to get PageMethods running.&lt;/p&gt;  &lt;p&gt;Let's have a look at the C# source code that we want to be execute when calling the AJAX method. As a very simple example I will return an integer value. First have a look at the source code that we are currently using in AjaxPro:&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:e194e812-6fe8-435b-8361-300487313686" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000;"&gt; WebApplication1 
{ 
    [AjaxPro.AjaxNamespace(&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Default&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;)] 
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;partial&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; _Default : System.Web.UI.Page 
    { 
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;protected&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Page_Load(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt; sender, EventArgs e) 
        { 
            AjaxPro.Utility.RegisterTypeForAjax(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(_Default)); 
        } 

        [AjaxPro.AjaxMethod] 
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; HelloWorld() 
        { 
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;; 
        } 
    } 
}
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;As I have recommended in the Google group for Ajax.NET Professional I'm using the [AjaxNamespace] attribute nearly every time. The reason is that it is very easy to move the class around or to make updates more easy. The [AjaxMethod] attribute marks the static HelloWorld method to be available in the JavaScript client-side proxy.&lt;/p&gt;

&lt;p&gt;With AjaxPro you call this method like following line:&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:ba457f46-bc4e-40fa-b84d-ea548211eb63" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;script type&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;text/javascript&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt; callme() { 
    Default.HelloWorld(mycallback); 
} 

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt; mycallback(res) { 
    alert(res.value); 
} 

&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;script&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;What do you need to change your code for AjaxPro to ASP.NET AJAX? The code-behind C# source looks very similar. Because we have put the ScriptManager control on the page we don't need the RegisterTypeForAjax call in the Page_Load. The control itselfs has the reference to the page.&lt;/p&gt;

&lt;p&gt;The AJAX methods (PageMethods) in ASP.NET AJAX have to be marked with the [WebMethod] attribute. To identify that the Page class includes a method that we want to expose the class has to be marked with the [ScriptService] attribute. That's everything you have to change. Don't forget to change the method to static if not already using static methods.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.ajaxpro.info/images/blog/Howto...movefromAjaxP.NETAJAXPageMethods_13695/WindowClipping3.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="280" alt="PageMethods C# source" src="http://www.ajaxpro.info/images/blog/Howto...movefromAjaxP.NETAJAXPageMethods_13695/WindowClipping3_thumb.png" width="480" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Wow, that was very easy, no source code change (only meta information are changed). Note that you can still leave Ajax.NET Professional attributes if you want. This makes it very easy to move from AjaxPro to ASP.NET AJAX and back if needed.&lt;/p&gt;

&lt;p&gt;On the client-side JavaScript code you have to do more changes but it is not very different. Well, have a look at the JavaScript source code:&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:69acb307-6658-4750-8ca2-103770be8c1c" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;script type&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;text/javascript&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt; onSuccess(value, ctx, methodName) { 
    alert(value &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;); 
} 

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt; onFailed(ex, ctx, methodName) { 
    alert(ex.get_exceptionType()); 
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; get_stackTrace(), get_message(), &lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; get_statusCode(), get_timedOut() &lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;} 

window.onload &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;() { 
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; ctx &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; { 
        CurrentValue: &lt;/span&gt;&lt;span style="color: #000000;"&gt;123456&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
        CurrentDate: &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Date() 
    };    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; sample context data &lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    PageMethods.HelloWorld(onSuccess, onFailed, ctx); 
} 

&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;script&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;In the window.onload event I invoke the HelloWorld method. As argument I pass the callback handler if the execution was successful. Another callback handler could be passed to be called if there occurs any problem like http errors or .NET exceptions. As last argument you can pass a context object that will be available in both callback handlers.&lt;/p&gt;

&lt;p&gt;If the invoke was successful you get up to three objects. The first will contain the value of the AJAX method, in our example it is the integer 2 (remember in AjaxPro it was res.value). The second passed object contains the context and the last one the method name (which does not include the namespace or class name when e.g. used in MasterPage and Page side-by-side).&lt;/p&gt;

&lt;p&gt;The onFailed callback handler will be executed on any error during invocation. As result you get a JavaScript objects with several methods that help you to identify the real error. Second and third passed objects are the same as for the onSuccess callback: the context and method name.&lt;/p&gt;

&lt;p&gt;The generation of the JavaScript client-side proxy will be included in the html output:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.ajaxpro.info/images/blog/Howto...movefromAjaxP.NETAJAXPageMethods_13695/Default1Editor.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="559" alt="PageMethods in source" src="http://www.ajaxpro.info/images/blog/Howto...movefromAjaxP.NETAJAXPageMethods_13695/Default1Editor_thumb.png" width="480" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;I hope this very short example will help you to move to ASP.NET AJAX. Any questions?&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5571739" width="1" height="1"&gt;&lt;img alt="via softlogger.com" src="http://softlogger.com/postview.aspx?ArticleID=17956"&gt;</description><author>Michael (AJAX.NET) Schwarz                                                                          </author><pubDate>2008-01-08T00:00:00</pubDate><category>AJAX</category></item><item><title>Aspects of OpenAjax</title><link>http://softlogger.com/16789/AJAX/aspects-of-openajax.aspx</link><description>&lt;p&gt;You know I like standards.&lt;/p&gt; &lt;p&gt;Even if it is some kind of more complex to implement a solution based on a standard than using a direct and efficient but proprietary way, there are benefits on the long way that I just don't want to miss: the ideas and thoughts of others materialized in APIs, specifications and best practices.&lt;/p&gt; &lt;p&gt;That's why I use the SOAP standard webservice protocol for my Ajax implementations.&lt;/p&gt; &lt;h3&gt;OpenAjax&lt;/h3&gt; &lt;p&gt;Now &lt;a href="http://www.openajax.org/" target="_blank"&gt;OpenAjax Alliance&lt;/a&gt; is another try of a group of about 75 companies and organizations to define standards in the Ajax hemisphere. There are a lot of ideas and some good ideas too in the current discussions. We all know that it is hard to define a standard specification that gets agreed by the majority of the members. And it can take a long time until a standard proposal is adopted.&lt;/p&gt; &lt;p&gt;Right now a version 1.0 of the specifications are on their way and they contain some good stuff that I like to bring into the Aspects of Ajax framework and support an probably upcoming standard this way.&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.openajax.org/member/wiki/OpenAjax_Hub_Specification" href="http://www.openajax.org/member/wiki/OpenAjax_Hub_Specification"&gt;http://www.openajax.org/member/wiki/OpenAjax_Hub_Specification&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;Libraries and Namespaces&lt;/h3&gt; &lt;p&gt;There is only one world we live in and there is only one global namespace in JavaScript. The problem is that multiple frameworks when used simultaneously in one page MUST use different global variable names, different namespaces when implementing XHTML and different prefixes and aliases for the namespaces. Especially the global names might cause a lot of problems.&lt;/p&gt; &lt;p&gt;Did you try to use 2 libraries that both register the $() function but implement it differently?&lt;/p&gt; &lt;p&gt;The OpenAjax registerLibrary and unregisterLibrary methods that can be used to help mastering this problem space.&lt;/p&gt; &lt;p&gt;The &lt;strong&gt;ajax, &lt;/strong&gt;the &lt;strong&gt;proxies&lt;/strong&gt; and the &lt;strong&gt;jcl&lt;/strong&gt; prefix will be used by the Aspects of Ajax framework because these are the names of the global variables I use (beside minor important stuff). I hope and pray that nobody else will use this prefix in any other AJAX framework. (I am the first - I won! :-)&lt;/p&gt; &lt;p&gt;No, and seriously: I don't like the global ajax variable being registered by any framework and right now I am not happy about this early (2005) decision any more.&lt;/p&gt; &lt;p&gt;The namespace used by the Aspects of Ajax frameworks will be &lt;strong&gt;de.mathertel&lt;/strong&gt; because &lt;a href="http://www.mathertel.de/AJAXEngine/"&gt;http://www.mathertel.de/AJAXEngine/&lt;/a&gt; is the URL where the documentation and the samples can be found on the web.&lt;/p&gt; &lt;p&gt;... but maybe it's time to register a product name related web address :-)&lt;/p&gt; &lt;p&gt;When implementing a standalone AJAX framework you do not have to care about these problems. Being compatible (and friendly to other frameworks) can open a wide space in combining functionality from different sources.&lt;/p&gt; &lt;h3&gt;Events - inter controls connections&lt;/h3&gt; &lt;p&gt;Connecting multiple controls on a page by using JavaScript can be a nightmare because many little scripts will have to know about the existing other elements on the page. If you want to reuse generalized controls this situation becomes worse and if you like to reuse components of different manufacturers ... &lt;/p&gt; &lt;p&gt;So it's a good thing to define a common functionality that does the job and that controls can use to talk to each other using the well known subscribe and publish pattern and the idea of events.&lt;/p&gt; &lt;p&gt;The Aspects of Ajax framework has a small implementation since almost 2 years (see &lt;a href="http://ajaxaspects.blogspot.com/2005/09/connecting-controls.html"&gt;http://ajaxaspects.blogspot.com/2005/09/connecting-controls.html&lt;/a&gt;) called "page properties" or data connections that also allows this kind of connectivity through the DataConnections object but compared with the event system of the OpenAjax hub specification there are some pros and cons.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;The OpenAjax hub has defined an idea of namespaces and namespace notation like the namespace ideas known from .NET, Java and other environments. Events that are published are prefixed by a namespace so different providers of the same event name can be distinguished. The page properties of the Aspects of Ajax framework only had one global namespace (the page).  &lt;li&gt;Using the OpenAjax hub specifications it is possible to subscribe to specific events by specifying the long name of the event and by using a wildcards for registering to multiple events. In the Aspects of Ajax framework it was possible to subscribe to all events.  &lt;li&gt;The Aspects of Ajax framework has a mechanism that allows to poll for a current value of a prior published property change / event. The OpenAjax hub has no such methods defined but it is easy to implement an invisible control that logs all changes and offers some methods for getting the latest values.  &lt;li&gt;The Aspects of Ajax framework has some specific controls that helped while developing. One of them is a log of all events and the new values. Beside the changed implementation they also have a new parameter to specify what specific namespace they should watch.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Overall the OpenAjax implementation has some big advantages over the older DataConnections and the additional functionality can be added.&lt;/p&gt; &lt;h3&gt;Implementation&lt;/h3&gt; &lt;p&gt;The OpenAjax Alliance provides a &lt;a href="http://openajaxallianc.sourceforge.net/" target="_blank"&gt;reference implementation&lt;/a&gt; is available in an early version and other implementations of the specification are welcome. After reading the available specs and noticing that it is "just" better then my prior codings I decided to implement the specific details on my own and make them available in a standalone JavaScript file. Some requirements are implemented different than in the reference implementation and maybe you find the time to have a look at the difference if you like.&lt;/p&gt; &lt;h3&gt;The size of the implementation&lt;/h3&gt; &lt;p&gt;As of this writing the (unfinished) reference implementation is about 2801 bytes. The (current) implementation available on my side at &lt;a title="http://www.mathertel.de/OpenAjax" href="http://www.mathertel.de/OpenAjax"&gt;http://www.mathertel.de/OpenAjax&lt;/a&gt; is about 1300 bytes. Maybe my implementation is a little bit slower because I rely on regular expressions but I have not done any detailed measures yet. Both sizes are calculated by comparing a shrinked version using the tool from the dojo framework that is available online at &lt;a title="http://alex.dojotoolkit.org/shrinksafe/" href="http://alex.dojotoolkit.org/shrinksafe/"&gt;http://alex.dojotoolkit.org/shrinksafe/&lt;/a&gt;. This is because I don't want to compare the comment lines or different programming styles.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The same implementation is also embedded into the &lt;a title="~/controls/jcl.js" href="http://www.mathertel.de/AJAXEngine/ViewSrc.aspx?file=~/controls/jcl.js" target="_blank"&gt;jcl.js&lt;/a&gt; implementation that also implements the JavaScript Behavior mechanism.&lt;/p&gt; &lt;h3&gt;Future planning&lt;/h3&gt; &lt;p&gt;I will have a look for the specification of the OpenAjax Alliance hub and I will post a compatible version. It is just good to have a second source.&lt;/p&gt; &lt;p&gt;The Aspects of Ajax framework. including the SOAP client for web services in JavaScript will register itself and will use the hub implementation as a substitution of the older DataConnections implementation that will be removed completely.&lt;/p&gt; &lt;img alt="via softlogger.com" src="http://softlogger.com/postview.aspx?ArticleID=16789"&gt;</description><author>Aspects of AJAX</author><pubDate>2008-01-05T00:00:00</pubDate><category>AJAX</category></item><item><title>More OpenAjax compatible components</title><link>http://softlogger.com/16756/AJAX/more-openajax-compatible-components.aspx</link><description>&lt;h3&gt;The PersistCookie control&lt;/h3&gt; &lt;p&gt;OpenAjax events are not persistent. The specification is based on the fact that the subscribers are informed just in time when the event was published. But by using cookies the passed values can survive a page refresh or even some days. &lt;/p&gt; &lt;p&gt;In some applications it is important that the values that where published by OpenAjax events and have changed the web application in a specific way are presenting the state of the client. With the PersistCookie control it is possible to save these simple values into cookies and makes them available when the page is reloaded the next time the page loads by publishing a new OpenAjax event. By using this control it is possible to reload a page in the state that was given when the user visited it the last time or when using the refresh button.&lt;/p&gt; &lt;p&gt;Using this functionality is easy by just including a ASP.NET control like this:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;ajax&lt;/span&gt;:&lt;span style="color: #800000"&gt;PersistCookie&lt;/span&gt; &lt;font color="#ff0000"&gt;runat&lt;/font&gt;=&lt;font color="#0000ff"&gt;"server"&lt;/font&gt; &lt;span style="color: #ff0000"&gt;eventnamespace&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"jcl"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;eventname&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"view"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;The control is designed for persisting the values of multiple eventnames of the same eventnamespace and is providing a mechanism for default values in the case of a first time load of the page.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Using Cookies &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cookies do not have a namespace based mechanism as we can see in the OpenAjax hub specification so the names that are used within the cookies will not contain the namespace used by the OpenAjax event but will only use the local eventname.&lt;/p&gt;
&lt;p&gt;Another advantage of not using the namespace to build cookie names is a better use of the available storage space of cookies.&lt;/p&gt;
&lt;p&gt;If you have to store values by using the same name multiple times in your web application it is important that the part of each used cookie value is more specific than the standard root. The PersistCookie control therefore uses the current url of the page, extracts the folder part of it and uses this as the path to store the cookies. So, in most cases you will not have to specify the path attribute of this control.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;eventnamespace&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This attribute can be used for specifying the namespace that contain the to be persisted events.&lt;/p&gt;
&lt;p&gt;The default namespace is set to "jcl".&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;eventname&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This attribute can contain a list of event names together with the default values. Then event names are separated by semicolons and the default values are appended to the names using the equal sign.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;path&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This attribute specifies a specific path for the cookie. If this attribute is not set the current url of the page is used to build a path that specifies the current folder. This avoids conflicts with other cookies used on the same web site.&lt;/p&gt;
&lt;p&gt;You will have to set this attribute only if you want to share cookies over multiple pages in different folders.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;expire&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This attribute specifies how long the cookie values should be stored.&lt;/p&gt;
&lt;p&gt;If this attribute is not set the values are only kept in memory while the browser remains open.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Samples&lt;/strong&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;ajax&lt;/span&gt;:&lt;span style="color: #800000"&gt;PersistCookie&lt;/span&gt; &lt;font color="#ff0000"&gt;runat&lt;/font&gt;=&lt;font color="#0000ff"&gt;"server"&lt;/font&gt; &lt;span style="color: #ff0000"&gt;eventnamespace&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"jcl"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;eventname&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"view"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;or&lt;pre class="code"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;ajax&lt;/span&gt;:&lt;span style="color: #800000"&gt;PersistCookie&lt;/span&gt; &lt;font color="#ff0000"&gt;runat&lt;/font&gt;=&lt;font color="#0000ff"&gt;"server"&lt;/font&gt; &lt;span style="color: #ff0000"&gt;eventname&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"kosten=120000;jahre=4;kapital=999"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"server"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;expire&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"2"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;You can find the implementation here:&lt;/p&gt;
&lt;p&gt;&lt;a title="http://www.mathertel.de/AJAXEngine/documentation/ViewDoc.aspx?file=~/controls/persistcookie.js" href="http://www.mathertel.de/AJAXEngine/documentation/ViewDoc.aspx?file=~/controls/persistcookie.js"&gt;http://www.mathertel.de/AJAXEngine/documentation/ViewDoc.aspx?file=~/controls/persistcookie.js&lt;/a&gt;&lt;/p&gt;  &lt;img alt="via softlogger.com" src="http://softlogger.com/postview.aspx?ArticleID=16756"&gt;</description><author>Aspects of AJAX</author><pubDate>2008-01-05T00:00:00</pubDate><category>AJAX</category></item><item><title>Useful OpenAjax Event Logger</title><link>http://softlogger.com/16759/AJAX/useful-openajax-event-logger.aspx</link><description>&lt;p&gt;While working on further adopting the OpenAjax event mechanism I wrote this small JavaScript include file that helps inspecting the current OpenAjax events.&lt;/p&gt; &lt;p&gt;It is implemented by using a single JavaScript include file that can be found at &lt;a href="http://www.mathertel.de/AjaxEngine/controls/OpenAjaxEventLog.js"&gt;http://www.mathertel.de/AjaxEngine/controls/OpenAjaxEventLog.js&lt;/a&gt; (&lt;a href="http://www.mathertel.de/AJAXEngine/ViewSrc.aspx?file=~/controls/OpenAjaxEventLog.js" target="_blank"&gt;view source&lt;/a&gt;).&lt;/p&gt; &lt;p&gt;It is easy to include this file into ANY web page by using a small JavaScript link (a.k.a. bookmarklet) that you can type into the address bar or save as a link in your favorites:&lt;/p&gt; &lt;p&gt;Create any Link in your favorites, or the link bar and name it for example like this:&lt;/p&gt; &lt;p&gt;&lt;a title="javascript:void(document.body.appendChild(document.createElement('script')).src='http://www.mathertel.de/AjaxEngine/controls/OpenAjaxEventLog.js')" href="http://www.mathertel.de/AjaxEngine/controls/OpenAjaxEventLog.js')"&gt;&lt;img src="http://www.mathertel.de/Ajax/images/OpenAjaxLogLink.png"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Here is the url that you can paste into the url field in the property dialog of the link.&lt;/p&gt;&lt;pre class="code"&gt;javascript:&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;(&lt;span style="color: #0000ff"&gt;document&lt;/span&gt;.body.appendChild(&lt;span style="color: #0000ff"&gt;document&lt;/span&gt;.createElement('script')).src='http:&lt;span style="color: #008000"&gt;//www.mathertel.de/AjaxEngine/controls/OpenAjaxEventLog.js')&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;There will be one dialog that warns you about the fact that the url is using JavaScript (an unregistered program - what means that ?) and that this may be unwanted. But in this case it is what we need.&lt;/p&gt;
&lt;p&gt;You can open any of the sample pages from the &lt;a title="http://www.openajax.org/member/wiki/InteropFest_1.0" href="http://www.openajax.org/member/wiki/InteropFest_1.0"&gt;http://www.openajax.org/member/wiki/InteropFest_1.0&lt;/a&gt; and try it.&lt;/p&gt;
&lt;p&gt;If you click on the link you just created a extra area will be appended at the bottom of the page and all OpenAjax events will be shown in there.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you like to know more about bookmarklets you can google this term and you will find a lot more tricks.&lt;/p&gt;
&lt;p&gt;My favorite is:&lt;/p&gt;&lt;pre class="code"&gt;javascript:'&amp;lt;xmp&amp;gt;'+&lt;span style="color: #0000ff"&gt;document&lt;/span&gt;.documentElement.outerHTML+'&amp;lt;/xmp&amp;gt;'&lt;/pre&gt;  &lt;img alt="via softlogger.com" src="http://softlogger.com/postview.aspx?ArticleID=16759"&gt;</description><author>Aspects of AJAX</author><pubDate>2008-01-05T00:00:00</pubDate><category>AJAX</category></item><item><title>AJAX in Sharepoint: New Articles</title><link>http://softlogger.com/17337/AJAX/ajax-in-sharepoint-new-articles.aspx</link><description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;Windows SharePoint Services 3.0 Software Development Kit provides overview information, installation instructions, and programming examples to introduce you to the way that &lt;a title=" " href=" "&gt;Microsoft&lt;/a&gt; ASP.NET AJAX interacts with Web Parts.  &lt;/p&gt;&lt;h3&gt;In This Section&lt;/h3&gt; &lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb802856.aspx"&gt;Overview: ASP.NET AJAX and Web Parts in Windows SharePoint Services 3.0&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb861898.aspx"&gt;Installing ASP.NET AJAX Extensions in Windows SharePoint Services&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb861877.aspx"&gt;Walkthrough: Creating a Basic ASP.NET AJAX-enabled Web Part&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118198"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118198" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://geekswithblogs.net/ajames/aggbug/118198.aspx" width="1" height="1" /&gt;&lt;img alt="via softlogger.com" src="http://softlogger.com/postview.aspx?ArticleID=17337"&gt;</description><author>Connected Systems Chilled Out Blog</author><pubDate>2008-01-03T00:00:00</pubDate><category>AJAX</category></item><item><title>ActiveJax: An ActiveRecord to JavaScript Bridge</title><link>http://softlogger.com/13639/AJAX/activejax-an-activerecord-to-javascript-bridge.aspx</link><description>&lt;p&gt;&lt;img src="http://www.rubyinside.com/wp-content/uploads/2007/12/ActiveJaxLogo.jpg" width="189" height="80"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rails.simpltry.com/active_jax.html"&gt;ActiveJax&lt;/a&gt; is a Rails plugin developed by Nicholas Schlueter that acts as a bridge between ActiveRecord and &lt;a href="http://www.prototypejs.org/"&gt;Prototype&lt;/a&gt;-backed JavaScript. This means you can call ActiveRecord model methods from JavaScript using AJAX. Example:&lt;/p&gt;
&lt;pre&gt;
ActiveJax.Author.find_by_name("Nicholas Schlueter").each(function(author) {alert(author.name);});
&lt;/pre&gt;
&lt;p&gt;I asked Nicholas how this differs from the existing &lt;a href="http://giantrobots.thoughtbot.com/2007/4/2/jester-javascriptian-rest"&gt;Jester&lt;/a&gt; library developed by Thoughtbot. One significant difference is the syntax. ActiveJax's mechanisms are all embedded underneath the ActiveJax object, whereas Jester offers up the "models" more directly within JavaScript. ActiveJax also doesn't depend on the application providing RESTful services, it's possible to call any method on the models. All this said, the motivations for using Jester versus ActiveJax cross significantly, so it's worth checking out both libraries if this is an area that interests you.&lt;br /&gt;
More info is available in &lt;a href="http://www.simpltry.com/2007/11/23/ann-active-jax/"&gt;this blog post&lt;/a&gt; by Nicholas, including a link to a sample application.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/RubyInside?a=9AKFeQ"&gt;&lt;img src="http://feeds.feedburner.com/~a/RubyInside?i=9AKFeQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RubyInside?a=i3Mu7PC"&gt;&lt;img src="http://feeds.feedburner.com/~f/RubyInside?i=i3Mu7PC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RubyInside?a=umq0IGc"&gt;&lt;img src="http://feeds.feedburner.com/~f/RubyInside?i=umq0IGc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RubyInside?a=fDKRhQc"&gt;&lt;img src="http://feeds.feedburner.com/~f/RubyInside?i=fDKRhQc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RubyInside/~4/196424974" height="1" width="1"/&gt;&lt;img alt="via softlogger.com" src="http://softlogger.com/postview.aspx?ArticleID=13639"&gt;</description><author>Ruby Inside</author><pubDate>2007-12-07T00:00:00</pubDate><category>AJAX</category></item><item><title>Silverlight V2.0</title><link>http://softlogger.com/13068/AJAX/silverlight-v2-0.aspx</link><description>&lt;p&gt;And only yesterday, MikeO were still calling it V1.1 at our Silverlight event in Birmingham.&lt;/p&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/11/29/net-web-product-roadmap-asp-net-silverlight-iis7.aspx"&gt;Get the news from ScottGu&lt;/a&gt;! If I read it correctly;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Extensible control model&lt;/li&gt; &lt;li&gt;Layout support (hopefully that's extensible too :-))&lt;/li&gt; &lt;li&gt;Data binding&lt;/li&gt; &lt;li&gt;Control templating&lt;/li&gt; &lt;li&gt;Actual Shipping Controls - see Scott's list :-)&lt;/li&gt; &lt;li&gt;Various comms options beyond what we have today with JSON-only encoding including WS-*.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;and more. There's a beta coming in Q1 of 2008 with a Go-Live license - wahey and Visual Studio will get an update too for Silverlight dev.&lt;/p&gt; &lt;p&gt;Scott's post also says that the ASP.NET 3.5 Extensions are coming &lt;strong&gt;next week&lt;/strong&gt; including the &lt;strong&gt;MVC &lt;/strong&gt;bits and the &lt;strong&gt;Dynamic Data &lt;/strong&gt;bits.&lt;/p&gt;&lt;img src="http://mtaulty.com/CommunityServer/aggbug.aspx?PostID=9978" width="1" height="1"&gt;&lt;img alt="via softlogger.com" src="http://softlogger.com/postview.aspx?ArticleID=13068"&gt;</description><author>Mike Taultys Blog</author><pubDate>2007-11-29T00:00:00</pubDate><category>AJAX</category></item><item><title>AjaxEngine is now full based on the OpenAjax specification</title><link>http://softlogger.com/12758/AJAX/ajaxengine-is-now-full-based-on-the-openajax-specification.aspx</link><description>&lt;p&gt;During the last weeks a lot of work was done to remove the old DataConnection implementations in the Ajax Engine open source project. Now it's done. You can find a first version of it in the repository on&amp;nbsp; Sourceforge: &lt;a title="http://sourceforge.net/svn/?group_id=200182" href="http://sourceforge.net/svn/?group_id=200182"&gt;http://sourceforge.net/svn/?group_id=200182&lt;/a&gt;&lt;/p&gt; &lt;p&gt;and the sample web site &lt;a title="http://www.mathertel.de/AJAXEngine" href="http://www.mathertel.de/AJAXEngine"&gt;http://www.mathertel.de/AJAXEngine&lt;/a&gt; was also published with this version today.&lt;/p&gt; &lt;p&gt;The current version will be tagged 1.5.nnnn.beta1 and a donwloadable zip file will also be available soon.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The OpenAjax hub specifications seems to be almost finished so not much work will be left until a final full compatible version.&lt;/p&gt; &lt;img alt="via softlogger.com" src="http://softlogger.com/postview.aspx?ArticleID=12758"&gt;</description><author>Aspects of AJAX</author><pubDate>2007-11-27T00:00:00</pubDate><category>AJAX</category></item><item><title>Ajax with the ASP.NET MVC Framework</title><link>http://softlogger.com/12756/AJAX/ajax-with-the-asp-net-mvc-framework.aspx</link><description>This post presents a few basic Ajax features (similar to partial rendering and behaviors in terms of concepts) running on top of the ASP.NET MVC framework... some early ideas, experimentation and app-building results.&lt;img alt="via softlogger.com" src="http://softlogger.com/postview.aspx?ArticleID=12756"&gt;</description><author>Nikhil Kotharis Weblog</author><pubDate>2007-11-26T00:00:00</pubDate><category>AJAX</category></item><item><title>A simple menubar</title><link>http://softlogger.com/11757/AJAX/a-simple-menubar.aspx</link><description>&lt;p&gt;By using the hover&amp;nbsp;effect it is possible to realize a simple menubar that will be used by an upcoming control that allows rich text editing.&amp;nbsp;Here I focus on the implementation of the menubar that is implemented as a separate control and can also be used with small changes for other purposes.&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.mathertel.de/AJAX/Images/menubarsample.png"&gt;&lt;/p&gt; &lt;h3&gt;Building the html code for the menubar&lt;/h3&gt; &lt;p&gt;The html code for building a menubar is implemented by using an outer &amp;lt;div&amp;gt; element with a classname "VEMenuBar". This element is used as the wrapper for all parts of the menubar and is displayed in the background.&lt;/p&gt; &lt;p&gt;The inner elements and menu items can be implemented using &amp;lt;img&amp;gt; images or &amp;lt;span&amp;gt; elements with text content.&lt;/p&gt; &lt;p&gt;The third type of an inner element is a vertical line or separator that can be used to group elements.&lt;/p&gt; &lt;p&gt;Here is a small sample:&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt; &lt;span style="color: #ff0000"&gt;class&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"VEMenuBar"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;span&lt;/span&gt; &lt;span style="color: #ff0000"&gt;class&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"VEMenu"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;tabindex&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"1"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;onclick&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"datasource.search();"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Search&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;span&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;img&lt;/span&gt; &lt;span style="color: #ff0000"&gt;class&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"VEMenuSeparator"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;alt&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;" "&lt;/span&gt; &lt;span style="color: #ff0000"&gt;src&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"../controls/images/white.gif"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;img&lt;/span&gt; &lt;span style="color: #ff0000"&gt;class&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"VEMenu"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;alt&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"show first record"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;tabindex&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"1"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;src&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"../controls/images/first.gif"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; 
&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;h3&gt;The hover effect&lt;/h3&gt;
&lt;p&gt;When positioning the mouse over any enabled item of the menubar the individual item for starting a specific command is highlighted.&amp;nbsp;For implementing this effect&amp;nbsp;the already known &lt;a href="http://www.mathertel.de/AJAXEngine/S04_VisualEffects/MouseHoverDemo.aspx"&gt;hover behavior&lt;/a&gt; is reused. All that we need to implement it is to include the hover.js include file in the head of the page and setting the hover attribute on every element.&lt;/p&gt;&lt;pre class="code"&gt;&amp;lt;script type="&lt;span style="color: #8b0000"&gt;text/javascript&lt;/span&gt;" src="&lt;span style="color: #8b0000"&gt;../controls/Hover.js&lt;/span&gt;"&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;h3&gt;The menubar behavior (MenubarBehavior)&lt;/h3&gt;
&lt;p&gt;This behavior implements all the basic functionality for menubars. When bound to a html element it also loops through all the children of the outer element an sets the hover attribute to true for those elements that have a classname "VEMenu". This allows to enable the hover effect without implementing the hover attribute for every menu item.&lt;/p&gt;
&lt;p&gt;If you set the tabindex property on menu items another functionality is enabled. By setting tabindex to a value greater then 0 the element can get the focus. When pressing the space bar while the focus is on a specific menuitem the onclick method of the menuitem will be called. This allows you to use the keyboard instead of clicking with the mouse.&lt;/p&gt;
&lt;h3&gt;The HTML elements that build the menubar&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;First of all&amp;nbsp;the outermost&amp;nbsp;element of the menubar that will get attached the behavior is a div element with a classname "VEMenuBar". This element is used as the wrapper for all parts of the menubar and is displayed in the background.&lt;/p&gt;
&lt;p&gt;The icons or other images are placed in the menu by using &amp;lt;img&amp;gt; elements as children inside the VEMenuBar element&lt;/p&gt;
&lt;p&gt;and will&amp;nbsp;have a classname "VEMenu". They will automatically get an attribute hover="true" to enable the hover effect.&lt;/p&gt;
&lt;h3&gt;CSS definitions&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;Some&amp;nbsp;classnames need to be defined: &lt;/p&gt;&lt;pre class="code"&gt;.&lt;span style="color: #800000"&gt;VEMenuBar&lt;/span&gt; { &lt;span style="color: #ff0000"&gt;background-color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#eeeeee&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;padding&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;2px 8px 2px 8px&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;height&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;20px&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;overflow&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;hidden&lt;/span&gt;;}&lt;/pre&gt;
&lt;p&gt;This defines the background color of the menubar. The padding definition will keep the inner icons away from the border.&lt;/p&gt;&lt;pre class="code"&gt;.&lt;span style="color: #800000"&gt;VEMenuBar&lt;/span&gt; * { &lt;span style="color: #ff0000"&gt;vertical-align&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;top&lt;/span&gt;;}&lt;/pre&gt;
&lt;p&gt;All elements will be vertically aligned by the top.&lt;/p&gt;&lt;pre class="code"&gt;.&lt;span style="color: #800000"&gt;VEMenuBar&lt;/span&gt; &lt;span style="color: #800000"&gt;span&lt;/span&gt; {&lt;span style="color: #ff0000"&gt;display&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;-moz-inline-box&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;display&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;inline-block&lt;/span&gt;;}&lt;/pre&gt;
&lt;p&gt;&amp;lt;span&amp;gt; elements inside the menubar can be used to create buttons with a text caption. This rule is used to position span elements by using the padding.&lt;br&gt;The IE will use the inline-block rule and Mozilla/Firefox will use the -moz-inline-box rule. They both don't understand the other syntax and will just ignore it.&lt;/p&gt;&lt;pre class="code"&gt;.&lt;span style="color: #800000"&gt;VEMenu&lt;/span&gt; { &lt;span style="color: #ff0000"&gt;border&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;0px&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;padding&lt;/span&gt;:2px}&lt;/pre&gt;
&lt;p&gt;This rule is used for the state of a icon that is not hovered or pushed. In my layout it has no border and is padding the graphic by using 2 pixels on every side.&lt;/p&gt;
&lt;p&gt;.VEMenuHover { border-style:solid;border-width:1px;border-color: #acc1e4 #203050 #203050 #acc1e4;padding:1px}&lt;br&gt;This is the state of a icon when the mouse is over it but is not pushed. In my layout I use 1 pixel of border on every side with some colors that makes the icon look like being raised a little bit. I reduce the padding to 1 px to avoid the shifting and flickering of the graphic.&lt;/p&gt;
&lt;p&gt;.VEMenuPushed { border-style:solid;border-width:1px;border-color: #203050 #acc1e4 #acc1e4 #203050;padding:1px}&lt;br&gt;This is the state of a icon when the icon is pushed down. In my layout I use 1 pixel of border on every side but with different colors and I reduce the padding to 1 px to avoid the shifting and flickering of the graphic.&lt;/p&gt;&lt;pre class="code"&gt;.&lt;span style="color: #800000"&gt;VEMenuSeparator&lt;/span&gt; { &lt;span style="color: #ff0000"&gt;display&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;inline-block&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;height&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;20px&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;width&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;1px&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;border-left&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;solid 1px #203050&lt;/span&gt;;}&lt;/pre&gt;
&lt;p&gt;Separators between groups of symbols are included by using a 1x1 white pixel image with a classname "VEMenuSeparator" that is displayed with a darker border on the left side.&lt;/p&gt;
&lt;h3&gt;Attaching functionality&lt;/h3&gt;
&lt;p&gt;The MenubarBehavior implementation has no special implementation for the onclick event on VEMenu items. The functionality of the menubar item should attached by using the onclick events directly.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You can find the state of the current implementation here:&lt;/p&gt;
&lt;p&gt;&lt;a title="http://www.mathertel.de/AJAXEngine/S04_VisualEffects/InlineEditDemo.aspx" href="http://www.mathertel.de/AJAXEngine/S04_VisualEffects/InlineEditDemo.aspx" target="_blank"&gt;http://www.mathertel.de/AJAXEngine/S04_VisualEffects/InlineEditDemo.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(see the page source by using the view link in the upper right corner)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Download the current version under development&lt;/h3&gt;
&lt;p&gt;I've added another downloadable archive file to the site : &lt;a title="Ajax_new.zip" href="http://www.mathertel.de/Downloads/Start_AJAX_new.aspx"&gt;Ajax_new.zip&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This Zip-File contains the current version of the ASP.NET 2.0 web project that builds this side.&lt;br&gt;The complete AJAX Engine and all samples and also unfinished samples and componente are included.&lt;br&gt;Use this download If you want to experiment with the Engine or if you want to have a look for the newest additions and features.&lt;/p&gt;&lt;img alt="via softlogger.com" src="http://softlogger.com/postview.aspx?ArticleID=11757"&gt;</description><author>Aspects of AJAX</author><pubDate>2007-11-20T00:00:00</pubDate><category>AJAX</category></item><item><title>Enable AJAX on Existing ASP.NET Website Using WCSF</title><link>http://softlogger.com/10695/AJAX/enable-ajax-on-existing-asp-net-website-using-wcsf.aspx</link><description>&lt;H1&gt;&lt;FONT face=Verdana&gt;Enable AJAX on Existing ASP.NET Website Using WCSF&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;by &lt;A href="http://www.davidhayden.com/"&gt;David Hayden&lt;/A&gt; ( &lt;A href="http://www.davidhayden.com/"&gt;Microsoft MVP C#&lt;/A&gt; ), Filed: &lt;A href="http://davidhayden.com/blog/dave/category/25.aspx?Show=All"&gt;ASP.NET 2.0&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Enabling &lt;A href="http://www.pnpguidance.net/Tag/AJAX.aspx"&gt;AJAX&lt;/A&gt; on an existing ASP.NET Website involves&amp;nbsp;the monotonous task of adding&amp;nbsp;various Web.config settings. If you have a relatively empty Web.config file, it is probably easiest to just copy a Web.config file with existing AJAX settings and merge the existing application's Web.config settings into it. Unfortunately, I had just the opposite case today. I had a really complex existing Web.config file and did not want to take the chance of screwing up the merge by copying over existing settings.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Then out of nowhere I had a flash of brilliance that practically knocked me out of my chair. The new version of the &lt;A href="http://www.pnpguidance.net/Category/WebClientSoftwareFactory.aspx"&gt;Web Client Software Factory&lt;/A&gt; has a recipe, called &lt;STRONG&gt;Enable AJAX&lt;/STRONG&gt;, that will add the AJAX configuration settings in&amp;nbsp;an existing&amp;nbsp;Web.config file. I wasn't using WCSF on the project, but it would only take two seconds to enable WCSF on the project, run the Enable AJAX recipe on the project to add the AJAX configuration settings, and disable WCSF on the project. So that is what I did :)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I can't show the project I am working on, but here is the recipe as show on my &lt;A href="http://www.pnpguidance.net/"&gt;PnPGuidance&lt;/A&gt; Website:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT face=Verdana size=2&gt;&lt;IMG alt="Enable AJAX on Existing ASP.NET Website" src="/davidhayden/images/data/EnableAjax.jpg"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The Enable AJAX Recipe in WCSF worked like a charm, but that didn't keep me from checking in all the previous changes to source code before doing it :)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Kudos to the Patterns &amp;amp; Practices Team&amp;nbsp;for adding&amp;nbsp;that wonderful new recipe in WCSF v2.0!!!! It didn't seem like a big deal at the time, but it is very handy ;)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;News Feed:&amp;nbsp;&lt;/FONT&gt;&lt;A href="http://www.davidhayden.com/"&gt;&lt;FONT face=Verdana size=2&gt;David Hayden&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; ( &lt;/FONT&gt;&lt;A href="http://www.davidhayden.com/"&gt;&lt;FONT face=Verdana size=2&gt;Microsoft MVP C#&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; )&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Filed: &lt;/FONT&gt;&lt;A href="http://davidhayden.com/blog/dave/category/25.aspx?Show=All"&gt;&lt;FONT face=Verdana size=2&gt;ASP.NET 2.0&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://davidhayden.com/blog/dave/aggbug/3388.aspx" width = "1" height = "1" /&gt;&lt;img alt="via softlogger.com" src="http://softlogger.com/postview.aspx?ArticleID=10695"&gt;</description><author>David Hayden - Florida .NET Developer - C# and SQL Server</author><pubDate>2007-11-16T00:00:00</pubDate><category>AJAX</category></item><item><title>ASP.NET AJAX Server-Side Validation - ServerSideValidationExtender in Validation Guidance Bundle</title><link>http://softlogger.com/10716/AJAX/asp-net-ajax-server-side-validation--serversidevalidationextender-in-validation-guidance-bundle.aspx</link><description>My brain is working overtime on the simple concept of doing server-side validation using ASP.NET AJAX in webforms just like the ServerSideValidationExtender in the Validation Guidance Bundle. I really dig the ServerSideValidationExtender Control, but am trying to better understand alternative solutions and the pros and cons of each. Let's start with the ServerSideValidationExtender and ASP.NET 2.0 CustomValidator Control. Read more...&lt;img src ="http://davidhayden.com/blog/dave/aggbug/3377.aspx" width = "1" height = "1" /&gt;&lt;img alt="via softlogger.com" src="http://softlogger.com/postview.aspx?ArticleID=10716"&gt;</description><author>David Hayden - Florida .NET Developer - C# and SQL Server</author><pubDate>2007-11-05T00:00:00</pubDate><category>AJAX</category></item></channel></rss>