ASP.NET使用新增的Page.ClientScript属性在ASP.NET页面上注册和使用Javascript函数.

注意: .NET Framewrok 1.0/1.1中的Page.RegisterStartupScriptPage.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" οnclick="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()方法是用来处理需要显示的数据信息. 一般调用连接数据库返回信息.

转载于:https://www.cnblogs.com/luoyaoquan/archive/2011/06/01/2067384.html

ASP.NET后台注册javascript脚本方法相关推荐

  1. asp.net后台调用javascript的方法

    1. 用Response.Write方法 代码如下: Response.Write("<script type='text/javascript'>alert("XXX ...

  2. 母版事件中注册javascript脚本

    母版事件中注册javascript脚本 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ Title      :㈠母版等事件中注册javascript脚本 De ...

  3. java 打开网页并运行脚本_各种浏览器开启JavaScript脚本方法

    1.单击右上角的齿轮图标.从出现的菜单中选择Internet 选项. 2.单击安全选项卡.单击窗口底部的自定义级别按钮,弹出安全设置对话框. 3.找到脚本目录.单击JAVA 小程序下的启用选项,选择此 ...

  4. 谷歌浏览器如何启用java小脚本_各种浏览器开启JavaScript脚本方法

    随着网站设计技术的发展,为了用户友好体验,大部分网站使用了JavaScript脚本设计,如果您的浏览器禁用或关闭的JavaScript支持,那么可能造成网站体验差或网站部分功能无法使用 下面提供10种 ...

  5. qq 浏览器不支持java_各种浏览器开启JavaScript脚本方法

    随着网站设计技术的发展,为了用户友好体验,大部分网站使用了JavaScript脚本设计,如果您的浏览器禁用或关闭的JavaScript支持,那么可能造成网站体验差或网站部分功能无法使用. 下面提供10 ...

  6. ASP.net2.0调试JavaScript脚本

    第一步:在IE的"Internet设置"中选择"高级"--"安全"--"启用集成windows身份验证"(这一步很重要! ...

  7. javascript动态加载css、javascript脚本 方法

    1. 动态加载js文件到head标签并执行回调 方法调用:dynamicLoadJs('http://www.yimo.link/static/js/main.min.js',function(){a ...

  8. Kooboo CMS - 之后台注册用户流程方法。

    今天决定写一篇好一点的文章,吼吼!首先我们必须找到这个文件,这个文件是UsersController.cs,我们找到和添加新用户有关的方法,如下代码: public virtual ActionRes ...

  9. asp.net后台cs 和 JavaScript 互相调用方法

    key:asp.net js方法互调   asp.net 前台如何调用后台方法 1. javaScript函数中执行C#代码中的函数: 方法一:1.首先建立一个按钮,在后台将调用或处理的内容写入but ...

最新文章

  1. 2021年大数据Flink(三十九):​​​​​​​Table与SQL ​​​​​​总结 Flink-SQL常用算子
  2. 赛门铁克开启“容灾即服务”时代
  3. 操作系统CPU上下文切换
  4. Spark2.x详解
  5. crontab的使用记录
  6. mysql 数据字典详解_MySQL8功能详解——数据字典
  7. 3dmax卡线基础知识
  8. android动态相机权限
  9. java无法解析类型数据,”无法解析类型 这是简介引用的类文件要求 从必需的 .class 文件间接引用了“——解决方法...
  10. dockerfile的端口映射
  11. 那些年你用过最好的键盘
  12. 4. 计算机科学 (Kaggle项目拆解:泰坦尼克号预测)
  13. xampp配置虚拟主机的步骤
  14. python风控模型举例_一文搞定风控模型6大核心指标(附代码)
  15. Exception in thread “main“ org.apache.spark.sql.catalyst.parser.ParseException: extraneous input ‘$
  16. 南京航空大学c语言课程设计,南京航空航天大学C语言课程设计报告.doc
  17. 【追剧达人JAVA修复版】苹果CMS10原生APP修改版 影视APP源码附安装教程
  18. 利用AVISPA证明D2D协议
  19. 产生调幅波的几种方法
  20. softmax回归的简洁实现

热门文章

  1. 关闭rlogin服务linux,Linux rlogin命令
  2. mysql中只运行一部分数据_MySQL(一)——MySQL基础和部分面试题
  3. 从零开始刷Leetcode——数组(122.167.169)
  4. YOLODet最新算法的目标检测开发套件,优化到部署
  5. 期末计算机课总结100字,学期总结:学期总结100字
  6. flex socket java_使用Java编写Socket服务器,并且与Flex通信(二)
  7. php用字母数字生成用户名,请问生成字母加数字
  8. 软中断网卡处理Linux高性能外部设备处理机制SMP
  9. python导入自定义函数_python怎么导入自定义函数
  10. 从单机到集群会话的管理之集群模式一