ASP.net注册脚本用法
来源:互联网 发布:asp个人网站源码 编辑:程序博客网 时间:2024/05/23 01:49
ASP.NET使用新增的Page.ClientScript属性在ASP.NET页面上注册和使用Javascript函数.
注意: .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" />
<!--.aspx.cs页面-->
protected void btnScript_Click(object sender, EventArgs e)
{
MessageBox.Show(this,"myScript", "HelloWorld!!!");//Page对象,键名,消息.
}
/// <summary>
/// 模拟Winform的MessageBox.Show();
/// </summary>
public class MessageBox
{
public static void Show(System.Web.UI.Page page,string key, string Message)
{
string myScript = @"alert('" + Message + "');";
if (!page.ClientScript.IsClientScriptBlockRegistered(key))
{
page.ClientScript.RegisterClientScriptBlock(page.GetType(), key, myScript, true);
}
}
}
<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>
//错误示范
//<!--.aspx.cs页面(使用RegisterClientScriptBlock报错,找不到指定控件的ID) -->
//protected void btnScript_Click(object sender, EventArgs e)
//{
// string myScript = @"alert(document.forms[0]['txtMessage'].value);";
// if (! Page.ClientScript.IsClientScriptBlockRegistered("MyScript"))
// {
// Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript", myScript, true);
// }
//}
//正确示范
<!--.aspx.cs页面(应该使用RegisterStartupScript) -->
protected void btnScript_Click(object sender, EventArgs e)
{
string myScript = @"alert(document.forms[0]['txtMessage'].value);";
if (! Page.ClientScript.IsStartupScriptRegistered("MyScript"))
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", myScript, true);
}
}
<3>使用Page.ClientScript.RegisterClientScriptInclude(引用.js文件)
//C#中:
string myScript = "myJsCode.js";
Page.ClientScript.RegisterClientScriptInclude("myKey",myScript);
//这会在ASP.NET中生成以下代码
<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>不能在这里使用
<!-- aspx.cs页面 -->
public partial class CallBackPage: System.Web.UI.Page,System.Web.UI.ICallbackEventHandler
{
private string _callbackResult = null;
protected void Page_Load(object sender, EventArgs e)
{
//GetRandom是方法名, 不需要括号()
string reference = Page.ClientScript.GetCallbackEventReference(this, "arg", "GetRandom", "content");
string myScript = @"function UseCallBack(arg,content)" + "{" + reference + ";" + "}";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "key", myScript, true);
}
#region ICallbackEventHandler 成员(实现接口)
string ICallbackEventHandler.GetCallbackResult()
{
return _callbackResult;
}
void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
{
Random random = new Random();
_callbackResult = random.Next().ToString();
}
#endregion
}
Page_Load,GetCallbackResult() 写法趋于固定, 只需要换方法名即可.
RaiseCallbackEvent()方法是用来处理需要显示的数据信息. 一般调用连接数据库返回信息.
- ASP.net注册脚本用法
- asp.net ajax--脚本注册
- asp.net ajax 脚本注册方式
- ASP.NET客户端注册脚本汇总
- asp.net页面注册JS脚本
- ASP.NET页面注册Javascript脚本
- ASP.NET页面注册Javascript脚本
- ASP.NET后台注册javascript脚本方法
- ASP.NET后台注册javascript脚本方法
- ASP.NET后台注册javascript脚本方法
- ASP.NET中后台注册js脚本攻略
- Asp.net AJAX调用后台注册脚本代码
- asp.net iis注册
- asp.net 1.1注册
- asp.net 注册IIS
- ASP.NET注册IIS
- asp .net注册
- ASP.NET注册界面
- ubuntu10.04安装KScope
- ftp服务的配置
- VC多文档编程技巧(取消一开始时打开的空白文档)
- 我是菜鸟,我要追随老鸟的足迹
- Silverlight 安装问题及解决方案
- ASP.net注册脚本用法
- WebSphere Concepts: Cell, Node, Cluster, Server…
- InnoDB 加载新的tablespace 的方法以及注意事项。
- 我是菜鸟,我要追随老鸟的足迹
- 乱码解决方案JNI 数据类型转换
- 消息 4104,级别 16,状态 1,第 1 行 无法绑定由多个部分组成的标识符 "f.新增日期"。
- AD规划的一点建议
- MyEclipse 一些vm模板文件的修改学习
- Skin++动态更换皮肤的Bug (未解决。。。。求高手)