<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MyToggleButton.ascx.cs" Inherits="Controls_MyToggleButton" %>
<button class="Controls_MyToggleButton">[Controls_MyToggleButton]</button>
using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using ScriptCoreLib;
[assembly: Script, ScriptTypeFilter(ScriptType.JavaScript, "JavaScript")]
namespace JavaScript
{
using ScriptCoreLib.JavaScript.Extensions;
using ScriptCoreLib.JavaScript.DOM.HTML;
[Script]
public class Controls_MyToggleButton
{
readonly IHTMLButton Button;
public Controls_MyToggleButton(IHTMLButton e)
{
this.Button = e;
var i = 0;
var t = new[]
{
"Hello World",
"ASP.NET Web Site",
"Powered by jsc",
};
Action Update =
delegate
{
e.innerText = t[i % t.Length];
};
e.onclick +=
delegate
{
i++;
Update();
};
Update();
}
static Controls_MyToggleButton()
{
typeof(Controls_MyToggleButton).SpawnTo(
i => new Controls_MyToggleButton((IHTMLButton)i)
);
}
}
}
public partial class Controls_MyToggleButton : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" %>
<%@ Register src="Controls/MyToggleButton.ascx" tagname="MyToggleButton" tagprefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<div>
<uc1:MyToggleButton ID="MyToggleButton2" runat="server" />
<uc1:MyToggleButton ID="MyToggleButton1" runat="server" />
<uc1:MyToggleButton ID="MyToggleButton3" runat="server" />
</div>
<hr />
<form id="form1" runat="server">
<div>
The post-back form is here.
</div>
</form>
</body>
</html>
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class MyPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
jsc.server.WebTools.CompileAndRegisterClientScript(this);
}
}
Let's view this page in the browser.
Looks like it is working as clicking on buttons rotates their text. Let's have a look at the HTML source.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
Untitled Page
</title></head>
<body>
<div>
<button class="Controls_MyToggleButton">[Controls_MyToggleButton]</button>
<button class="Controls_MyToggleButton">[Controls_MyToggleButton]</button>
<button class="Controls_MyToggleButton">[Controls_MyToggleButton]</button>
</div>
<hr />
<form name="form1" method="post" action="MyPage.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTA0NjYzODE4NWRk3Ftdn73h1xhVq4AZD+ZZyx1rqQQ=" />
</div>
<script src="ScriptCoreLib.DLL.js" type="text/javascript"></script>
<script src="ScriptCoreLib.Query.DLL.js" type="text/javascript"></script>
<script src="ScriptCoreLib.Net.DLL.js" type="text/javascript"></script>
<script src="App_Web_clientscriptreflector.ascx.cc671b29.fukrbr0c.dll.js" type="text/javascript"></script>
<script src="App_Code.3kx9sibe.dll.js" type="text/javascript"></script>
<script src="App_Web_webserviceasbutton.ascx.cc671b29.v6li4yci.dll.js" type="text/javascript"></script>
<script src="App_Web_elfbggzl.dll.js" type="text/javascript"></script>
<script src="App_Web_animatedlabel.ascx.cc671b29.nu-fkpq5.dll.js" type="text/javascript"></script>
<script src="App_Web_3lwwuv0p.dll.js" type="text/javascript"></script>
<div>
The post-back form is here.
</div>
</form>
</body>
</html>
protected void Application_BeginRequest(object sender, EventArgs e)
{
jsc.server.WebTools.VirtualRequest(this.Context);
}
protected void Page_Load(object sender, EventArgs e)
{
jsc.server.WebTools.CompileAndRegisterClientScript(this);
}
<button class="Controls_MyToggleButton">[Controls_MyToggleButton]</button>
[assembly: Script, ScriptTypeFilter(ScriptType.JavaScript, "JavaScript")]
This construct assumes that each element found by it's class name is a HTML button and spawns a new instance passing the button reference.
static Controls_MyToggleButton()
{
typeof(Controls_MyToggleButton).SpawnTo(
i => new Controls_MyToggleButton((IHTMLButton)i)
);
}