注意: .NET Framewrok 1.0/1.1中的Page.RegisterStartupScript 和 Page.RegisterClientScriptBlock方法已经被弃用,这两个用于注册脚本的方法需要一组键/值对,由于方法比较复杂,很可能发生键名冲突.Page.ClientScript属性把所有的脚本注册都放在一起,使代码不容易出错
<1>使用Page.ClientScript.RegisterClientScriptBlock(注册到页面顶部)
两种构建方式:
1).RegisterClientScriptBlock(Type type,String key,String script); //类型,键,脚本

2).RegisterClientScriptBlock(Type type,String key,String script,bool addScriptTags); //类型,键,脚本,是否添加脚本标记
例子:
< ! --.aspx页面-- >

< asp:Button ID ="btnScript" runat ="server" OnClick ="btnScript_Click" Text ="点击输出javascript" />
 
InBlock.gif<!--.aspx.cs页面-->
InBlock.gif
InBlock.gif protected void btnScript_Click( object sender, EventArgs e)
InBlock.gif{
InBlock.gif                MessageBox.Show( this, "myScript", "HelloWorld!!!"); //Page对象,键名,消息.
InBlock.gif}
InBlock.gif
/// <summary>
/// 模拟Winform的MessageBox.Show();
/// </summary>
InBlock.gif public class MessageBox    
InBlock.gif{
InBlock.gif         public static void Show(System.Web.UI.Page page, string key, string Message)
InBlock.gif        {
InBlock.gif                 string myScript = @"alert('" + Message + "');";
InBlock.gif                 if (!page.ClientScript.IsClientScriptBlockRegistered(key))
InBlock.gif                {
InBlock.gif                        page.ClientScript.RegisterClientScriptBlock(page.GetType(), key, myScript, true);
InBlock.gif                }
InBlock.gif        }
InBlock.gif}
 
<2>使用Page.ClientScript.RegisterStartupScript(注册到页面底部)

两种构建方式:
1).RegisterStartupScript(Type type,String key,String script); //类型,键,脚本

2).RegisterStartupScript(Type type,String key,String script,bool addScriptTags); //类型,键,脚本,是否添加脚本标记
注意:这两种注册方法虽然只是注册部位不一样,但是区别很大.如果页面上有一些处理控件的JavaScript,应该使用RegisterStartupScript
例子:
< ! --.aspx页面-- >

< asp:Button ID ="btnScript" runat ="server" OnClick ="btnScript_Click" Text ="点击输出javascript" />

< asp:TextBox ID ="txtMessage" runat ="server" >Hello ASP.NET! </asp:TextBox>
InBlock.gif //错误示范
InBlock.gif
InBlock.gif //<!--.aspx.cs页面(使用RegisterClientScriptBlock报错,找不到指定控件的ID) -->
InBlock.gif
InBlock.gif //protected void btnScript_Click(object sender, EventArgs e)
InBlock.gif //{
InBlock.gif //        string myScript = @"alert(document.forms[0]['txtMessage'].value);";
InBlock.gif //        if (! Page.ClientScript.IsClientScriptBlockRegistered("MyScript"))
InBlock.gif //        {
InBlock.gif //                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript", myScript, true);
InBlock.gif //        }
InBlock.gif //}
InBlock.gif //正确示范
InBlock.gif
InBlock.gif<!--.aspx.cs页面(应该使用RegisterStartupScript) -->
InBlock.gif
InBlock.gif protected void btnScript_Click( object sender, EventArgs e)
InBlock.gif{
InBlock.gif         string myScript = @"alert(document.forms[0]['txtMessage'].value);";
InBlock.gif         if (! Page.ClientScript.IsStartupScriptRegistered( "MyScript"))
InBlock.gif        {
InBlock.gif                Page.ClientScript.RegisterStartupScript( this.GetType(), "MyScript", myScript, true);
InBlock.gif        }
InBlock.gif}
<3>使用Page.ClientScript.RegisterClientScriptInclude(引用.js文件)
//C#中:
InBlock.gif string myScript = "myJsCode.js";
InBlock.gif
InBlock.gifPage.ClientScript.RegisterClientScriptInclude( "myKey",myScript);
InBlock.gif
InBlock.gif //这会在ASP.NET中生成以下代码
InBlock.gif
InBlock.gif<script scr= "myJsCode.js" type= "text/javascript"></script>
 
<4>使用回调功能(Ajax效果)
步骤:
1)在ASP.NET建立<input type='button' .../>
2)写入调用javscript
3)在.aspx.cs页面中实现ICallBackEventHandler接口
4)实现接口的两个方法:GetCallbackResult,RaiseCallbackEvent
5)在Page_Load里面注册脚本
 
例子:
< ! -- aspx页面 -- >

< script language ="javascript" type ="text/javascript" >
                function GetNumber()    
                {
                        UseCallBack(); //回调函数
                }

                //用来接受返回信息并显示
                function GetRandom(TextBox1, content)
                {
                        document.forms[0].txtMessage.value = TextBox1;
                }
</script>

< asp:TextBox ID ="txtMessage" runat ="server" > </asp:TextBox>    
< input id ="btn" type ="button" value ="GetRandom" onclick ="GetNumber()" />

注意: < asp:button >不能在这里使用

 
InBlock.gif<!-- aspx.cs页面 -->
InBlock.gif
InBlock.gif public partial class CallBackPage: System.Web.UI.Page,System.Web.UI.ICallbackEventHandler
InBlock.gif{
InBlock.gif         private string _callbackResult = null;
InBlock.gif         protected void Page_Load( object sender, EventArgs e)
InBlock.gif        {
InBlock.gif                 //GetRandom是方法名, 不需要括号()
InBlock.gif                 string reference = Page.ClientScript.GetCallbackEventReference( this, "arg", "GetRandom", "content");
InBlock.gif                 string myScript = @"function UseCallBack(arg,content)" + "{" + reference + ";" + "}";
InBlock.gif                Page.ClientScript.RegisterClientScriptBlock( this.GetType(), "key", myScript, true);
InBlock.gif        }
InBlock.gif
InBlock.gifICallbackEventHandler 成员(实现接口) #region ICallbackEventHandler 成员(实现接口)
InBlock.gif         string ICallbackEventHandler.GetCallbackResult()
InBlock.gif        {
InBlock.gif                 return _callbackResult;
InBlock.gif        }
InBlock.gif
InBlock.gif         void ICallbackEventHandler.RaiseCallbackEvent( string eventArgument)
InBlock.gif        {
InBlock.gif                Random random = new Random();
InBlock.gif                _callbackResult = random.Next().ToString();
InBlock.gif        }
InBlock.gif        #endregion
InBlock.gif}
 
Page_Load,GetCallbackResult() 写法趋于固定, 只需要换方法名即可.
RaiseCallbackEvent()方法是用来处理需要显示的数据信息. 一般调用连接数据库返回信息.