{"id":36,"date":"2011-11-08T12:30:00","date_gmt":"2011-11-08T12:30:00","guid":{"rendered":"https:\/\/wdev-blog.azurewebsites.net\/index.php\/2011\/11\/08\/encapsulating-an-ajax-client-control-into-a-custom-server-control-part-3\/"},"modified":"2011-11-08T12:30:00","modified_gmt":"2011-11-08T12:30:00","slug":"encapsulating-an-ajax-client-control-into-a-custom-server-control-part-3","status":"publish","type":"post","link":"http:\/\/panahy.nl\/index.php\/2011\/11\/08\/encapsulating-an-ajax-client-control-into-a-custom-server-control-part-3\/","title":{"rendered":"Encapsulating an AJAX client control into a custom server control (Part 3)"},"content":{"rendered":"<div dir=\"ltr\">\n<div dir=\"ltr\"><span style=\"color: black; font-family: Verdana;\">The <a href=\"http:\/\/wdevs.blogspot.com\/2011\/11\/implementing-custom-classes-for_08.html\">previous article<\/a> was a step forward but it is still far from reusing as a server side control. What we will do in this part will make us possible to have a custom textbox control that makes al it takes to have this client-side functionality and we will be able to drag the ASP.NET control into our page.<\/span><\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\"><span style=\"font-family: Verdana;\">To start with, we need a new server-side control library project that will compile as a dll and contains the server side code and embeds the client-side script. This project will have two files in it: the PassTextBox.cs which deals with the server-side TextBox and inherits from <span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">TextBox <\/span><\/span><\/span>and implements the <span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">IScriptControl<\/span><\/span><\/span>&nbsp;which makes it possible to embed the script code.<\/span><\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\"><span style=\"font-family: Verdana;\">Notice in the code that the class needs to register the script with the ScriptManager which is accessible through its static method <span style=\"font-family: 'Courier New';\">GetCurrent(Page)<\/span>. This is done in OnPreRender method.<\/span><\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\"><span style=\"font-family: Verdana;\">In the<a href=\"http:\/\/wdevs.blogspot.com\/2011\/11\/implementing-custom-classes-for_08.html\"> previous article<\/a> we had the css class names inside the javascript. In this example we will assign them through the controls properties. The GetScriptDescriptor method allows us to prototype our class where we define these properties.<\/span><\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"> <\/span><\/span><\/span><br \/><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">namespace<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> Panahy.Ajax<br \/>{<br \/>&nbsp; <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">public<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">class<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">PassTextBox<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> : <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">TextBox<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">, <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">IScriptControl<br \/><\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">&nbsp; {<\/span><\/span><br \/><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">private<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">ScriptManager<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> sMgr;<br \/><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">public<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">string<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> WeakCssClass;<br \/><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">public<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">string<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> MediumCssClass;<br \/><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">public<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">string<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> StrongCssClass;<\/span><\/span><br \/><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">protected<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">virtual<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">IEnumerable<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">&lt;<\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">ScriptDescriptor<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">&gt; GetScriptDescriptors()<br \/>{<br \/>&nbsp; <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">ScriptControlDescriptor<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> descriptor =<br \/>&nbsp;&nbsp;&nbsp; <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">new<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">ScriptControlDescriptor<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">(<\/span><\/span><span style=\"color: #a31515; font-family: Consolas;\"><span style=\"color: #a31515; font-family: Consolas;\"><span style=\"color: #a31515; font-family: Consolas;\">&#8220;Panahy.Ajax.PassTextBox&#8221;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">, <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">this<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">.ClientID);<\/p>\n<p>&nbsp; descriptor.AddProperty(<\/span><\/span><span style=\"color: #a31515; font-family: Consolas;\"><span style=\"color: #a31515; font-family: Consolas;\"><span style=\"color: #a31515; font-family: Consolas;\">&#8220;weakCssClass&#8221;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">, <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">this<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">.WeakCssClass);<br \/>&nbsp; descriptor.AddProperty(<\/span><\/span><span style=\"color: #a31515; font-family: Consolas;\"><span style=\"color: #a31515; font-family: Consolas;\"><span style=\"color: #a31515; font-family: Consolas;\">&#8220;mediumCssClass&#8221;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">, <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">this<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">.MediumCssClass);<br \/>&nbsp; descriptor.AddProperty(<\/span><\/span><span style=\"color: #a31515; font-family: Consolas;\"><span style=\"color: #a31515; font-family: Consolas;\"><span style=\"color: #a31515; font-family: Consolas;\">&#8220;strongCssClass&#8221;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">, <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">this<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">.StrongCssClass);<\/span><\/span><br \/><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">&nbsp; return<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">new<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">ScriptDescriptor<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">[] { descriptor };<br \/>}<\/span><\/span><br \/><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">protected<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">virtual<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">IEnumerable<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">&lt;<\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">ScriptReference<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">&gt; GetScriptReferences()<br \/>{<br \/>&nbsp; <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">ScriptReference<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> reference = <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">new<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">ScriptReference<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">();<\/p>\n<p>&nbsp; reference.Assembly = <\/span><\/span><span style=\"color: #a31515; font-family: Consolas;\"><span style=\"color: #a31515; font-family: Consolas;\"><span style=\"color: #a31515; font-family: Consolas;\">&#8220;Panahy.Ajax&#8221;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">;<br \/>&nbsp; reference.Name = <\/span><\/span><span style=\"color: #a31515; font-family: Consolas;\"><span style=\"color: #a31515; font-family: Consolas;\"><span style=\"color: #a31515; font-family: Consolas;\">&#8220;Panahy.Ajax.PassTextBox.js&#8221;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">;<br \/>&nbsp; <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">return<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">new<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">ScriptReference<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">[] { reference };<br \/>}<\/span><\/span><br \/><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">protected<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">override<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">void<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <strong>OnPreRender<\/strong>(<\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">EventArgs<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> e)<br \/>{<br \/>&nbsp; <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">if<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> (!<\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">this<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">.DesignMode)<br \/>&nbsp; {<br \/>&nbsp;&nbsp;&nbsp; <\/span><\/span><span style=\"color: green; font-family: Consolas;\"><span style=\"color: green; font-family: Consolas;\"><span style=\"color: green; font-family: Consolas;\">\/\/test for the existence of a ScriptManager <br \/>&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">sMgr = <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">ScriptManager<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">.<strong>GetCurrent<\/strong>(Page);<\/p>\n<p>&nbsp;&nbsp;&nbsp; <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">if<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> (sMgr == <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">null<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">throw<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">new<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">HttpException<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">(<\/span><\/span><span style=\"color: #a31515; font-family: Consolas;\"><span style=\"color: #a31515; font-family: Consolas;\"><span style=\"color: #a31515; font-family: Consolas;\">&#8220;A ScriptManager control must exist on the page.&#8221;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">);<\/span><\/span><br \/><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">&nbsp;&nbsp;&nbsp; sMgr.<strong>RegisterScriptControl<\/strong>(<\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">this<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">);<br \/>&nbsp; }<br \/>&nbsp; <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">base<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">.OnPreRender(e);<br \/>}<\/span><\/span><br \/><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">protected<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">override<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">void<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> Render(<\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">HtmlTextWriter<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> writer)<br \/>{<br \/>&nbsp; <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">if<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> (!<\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">this<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">.DesignMode)<br \/>&nbsp;&nbsp;&nbsp; sMgr.<strong>RegisterScriptDescriptors<\/strong>(<\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">this<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">);<\/span><\/span><br \/><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">&nbsp; base<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">.Render(writer);<br \/>}<\/span><\/span><br \/><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">IEnumerable<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">&lt;<\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">ScriptReference<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">&gt; <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">IScriptControl<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">.GetScriptReferences()<br \/>{<br \/>&nbsp; <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">return<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> GetScriptReferences();<br \/>}<\/span><\/span><br \/><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">IEnumerable<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">&lt;<\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">ScriptDescriptor<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">&gt; <\/span><\/span><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\"><span style=\"color: #2b91af; font-family: Consolas;\">IScriptControl<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">.GetScriptDescriptors()<br \/>{<br \/>&nbsp; <\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">return<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> GetScriptDescriptors();<br \/>}<br \/>}<br \/>}<\/span><\/span><\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\"><span style=\"font-family: Verdana;\">The javascript file remains as before. <br \/>Now we can reuse the control in any project that refers to the dll.<br \/><\/span><\/div>\n<div dir=\"ltr\"><span style=\"font-family: Verdana;\"><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><\/span><br \/><span style=\"font-family: Verdana;\"><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\">&lt;%<\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">@<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: maroon; font-family: Consolas;\"><span style=\"color: maroon; font-family: Consolas;\"><span style=\"color: maroon; font-family: Consolas;\">Register<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\">Assembly<\/span><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">=&#8221;Panahy.Ajax&#8221;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\">Namespace<\/span><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">=&#8221;Panahy.Ajax&#8221;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\">TagPrefix<\/span><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">=&#8221;panahyAjax&#8221;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> %&gt;<br \/><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"><\/span><\/span><\/span><\/span><\/span><br \/><span style=\"font-family: Verdana;\"><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">&lt;<\/span><\/span><\/span><span style=\"color: maroon; font-family: Consolas;\"><span style=\"color: maroon; font-family: Consolas;\"><span style=\"color: maroon; font-family: Consolas;\">panahyAjax<\/span><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">:<\/span><\/span><\/span><span style=\"color: maroon; font-family: Consolas;\"><span style=\"color: maroon; font-family: Consolas;\"><span style=\"color: maroon; font-family: Consolas;\">PassTextBox<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\">ID<\/span><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">=&#8221;textbox1&#8243;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\">runat<\/span><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">=&#8221;server&#8221;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\">width<\/span><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">=&#8221;200&#8243;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <br \/>&nbsp;&nbsp;&nbsp; <\/span><\/span><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\">TextMode<\/span><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">=&#8221;Password&#8221;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\">WeakCssClass<\/span><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">=&#8221;weak&#8221;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\">MediumCssClass<\/span><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">=&#8221;medium&#8221;<\/span><\/span><\/span><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"> <\/span><\/span><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\"><span style=\"color: red; font-family: Consolas;\"><br \/>&nbsp;&nbsp;&nbsp; StrongCssClass<\/span><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">=&#8221;strong&#8221;&gt;&lt;\/<\/span><\/span><\/span><span style=\"color: maroon; font-family: Consolas;\"><span style=\"color: maroon; font-family: Consolas;\"><span style=\"color: maroon; font-family: Consolas;\">panahyAjax<\/span><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">:<\/span><\/span><\/span><span style=\"color: maroon; font-family: Consolas;\"><span style=\"color: maroon; font-family: Consolas;\"><span style=\"color: maroon; font-family: Consolas;\">PassTextBox<\/span><\/span><\/span><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\"><span style=\"color: blue; font-family: Consolas;\">&gt;<\/span><\/span><\/span><\/span><\/span><\/span><br \/><span style=\"font-family: Verdana;\"><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"><span style=\"font-family: Consolas;\"><\/span><\/span><\/span><\/span><\/span><\/div>\n<div dir=\"ltr\"><span style=\"color: black; font-family: Verdana;\"><br \/><\/span><br \/><span style=\"color: black; font-family: Verdana;\">Although this sample can be handy to use as a template for other server controls, the introduced functionality could be done by creating an AJAX Behavior for client controls, which is the topic for the next article.<\/span><\/div>\n<div dir=\"ltr\"><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>The previous article was a step forward but it is still far from reusing as a server side control. What we will do in this part will make us possible to have a custom textbox control that makes al it takes to have this client-side functionality and we will be able to drag the ASP.NET &hellip; <a href=\"http:\/\/panahy.nl\/index.php\/2011\/11\/08\/encapsulating-an-ajax-client-control-into-a-custom-server-control-part-3\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Encapsulating an AJAX client control into a custom server control (Part 3)&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[32,31,18],"tags":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"post-thumbnail":false},"uagb_author_info":{"display_name":"Pouya Panahy","author_link":"http:\/\/panahy.nl\/index.php\/author\/pouya\/"},"uagb_comment_info":0,"uagb_excerpt":"The previous article was a step forward but it is still far from reusing as a server side control. What we will do in this part will make us possible to have a custom textbox control that makes al it takes to have this client-side functionality and we will be able to drag the ASP.NET&hellip;","_links":{"self":[{"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/posts\/36"}],"collection":[{"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/comments?post=36"}],"version-history":[{"count":0,"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/posts\/36\/revisions"}],"wp:attachment":[{"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/media?parent=36"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/categories?post=36"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/tags?post=36"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}