|
|||||||||||||||||||||
|
|||||||||||||||||||||
|
Announcements
Want a new Job?
Chapters
Services
Feature Zones
|
IntroductionOne of the things that drove me nuts while writing web applications was the battle to modularise your code while still keeping generated HTML neat. In particular, having individual code modules within a page render their own javascript often resulted in pages containing many different and unrelated pieces of script scattered in no particular order. It's nice to have javascript appear within the ASP.NET does provide a solution, of sorts, in the form of the The issues, at least for me, of the A new base class for your webpages.With ASP.NET providing the ability to derive your pages from whatever I instead created a simple class, RegisterClientScriptBlockRegisters a client side javascript block. The block is automatically surrounded by <script> tags void RegisterClientScriptBlock(string key, string script)
void RegisterClientScriptBlock(string key, string script, string language)
void RegisterClientScriptBlock(string key, string script, string language,
bool defer)
RegisterClientScriptFileRegisters a client side javascript file include void RegisterClientScriptFile(string key, string file)
void RegisterClientScriptFile(string key, string file, string language)
void RegisterClientScriptFile(string key, string file, string language,
bool defer)
RegisterClientScriptEventvoid RegisterClientScriptEvent(string key, string eventName, string ctrlName,
string script)
void RegisterClientScriptEvent(string key, string eventName, string ctrlName,
string script, string language)
Registers a client side javascript event handler. Will be rendered only for IE 4.0 and above.
IsClientScriptRegisteredReturns true if the script block is registered; otherwise, false. public bool IsClientScriptRegistered(string key)
Using the classUsing the class is simple.
ResultsConsider the page below which contains a simple form and a simple User Control. Both the form and the user control will register some javascript as described above. <%@ Page language="c#" Codebehind="WebForm1.aspx.cs"
AutoEventWireup="false" Inherits="CodeProject.WebForm1"
enableViewState="False" Trace="False"%>
<%@ Register TagPrefix="CP" TagName="WebUserControl1"
Src="WebUserControl1.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<asp:literal id="_clientScript" runat="server"></asp:literal>
</HEAD>
<body>
<form id=Form1 method=post runat="server">
<p>This is a very simple webpage. Click 'View Source' to
see the Javascript embedded within this page.
<P><input type=button id=MyButton name=MyButton value="Click me"></P>
<CP:WebUserControl1 id=WebUserControl11 runat="server"></CP:WebUserControl1>
</form>
</body>
</HTML>
The output, when rendered, is as follows: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<script type="text/javascript" language="Javascript 1.2"
src="MyScripts.js">
</script>
<script type="text/javascript" language="Javascript"><!--
alert("Script1 called");
--></script>
<script type="text/javascript" language="Javascript" defer="true"><!--
document.getElementById("MyTable").style.backgroundColor = '#ff9900';
--></script>
<script type="text/javascript" language="Javascript" for="MyButton"
event="onclick" defer="true"><!--
alert("Script3 called");
//--></script>
</HEAD>
<body>
<form name="Form1" method="post" action="WebForm1.aspx" id="Form1">
<p>This is a very simple webpage. Click 'View Source' to
see the Javascript embedded within this page.
<P><input type=button id=MyButton name=MyButton value="Click me"></P>
<table id=MyTable name=MyTable border=1 width=200 height=60
bgcolor=grey>
<tr><td align=center valign=middle><font size=2 face=verdana>This
is a User Control</font></td></tr>
</table>
</form>
</body>
</HTML>
| ||||||||||||||||||||