ASP.NET后台注册javascript脚本方法

asp.net 前后台交互 <br />1.如何在JavaScript访问C#函数? <br /><br /> 2.如何在JavaScript访问C#变量?<br /><br /> 3.如何在C#中访问JavaScript的已有变量?<br /><br /> 4.如何在C#中访问JavaScript函数?<br /><br /> 问题1答案如下:<br /><br /> javaScript函数中执行C#代码中的函数:<br /><br /> 方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_clic 阅读详情

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()方法是用来处理需要显示的数据信息. 一般调用连接数据库返回信息.

2026华数杯 国际大学生数学建模竞赛 A题 如何防守直接任意球? 解题思路+模型分析+代码 2026华数杯 国际大学生数学建模竞赛 A题 如何防守直接任意球? 解题思路+模型分析+代码。基于视频数据重构进球轨迹,建立空间坐标系并进行曲线拟合,推算初始速度。建立"香蕉球"、"电梯球"、"落叶球"三种典型直接任意球轨迹的动力学模型,分析C罗进球的类型。针对C罗这类强力球员的直接任意球,提出人墙排布策略和守门员防守策略。 阅读详情

相关推荐

python 成语接龙-连接数据库

from xpinyin import Pinyin import pymysql while 1: conn = pymysql.connect( host='localhost', #本地连接 user='root', #数据库账户名 password='password', #数据库密码 db='dic',

Hero2902的博客 598

ASP.NET中注册客户端脚本的三种方式

1. RegisterClientScriptBlock   把Javascript函数放在页面顶部 代码如下: protected void Page_Load(object sender, EventArgs e){  string myScript = @"function AlertHello() {                       var oText = docum...

weixin_34109408的博客 247

VQGAN实战:从文本到高清图像的保姆级生成教程(含PyTorch代码)

本文详细介绍了VQGAN(Vector Quantized Generative Adversarial Network)在文本到高清图像生成中的应用,提供了从环境配置到模型加载、文本编码及图像生成的完整PyTorch代码教程。通过实战案例和高级调优技巧,帮助开发者快速掌握VQGAN的核心技术,实现百万像素级的高清图像生成。

u8v9w0x1y的博客 649

ASP.NET编程模型:RegisterStartupScript向页面注册脚本

<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default3.aspx.cs"Inherits="WebParts_Default3"%><%@RegisterSrc="SelectPro.ascx"TagName="SelectPro"TagPrefix="uc1"%><...

164

Vue3实战:从零构建ElementPlus后台管理系统全流程

本文详细介绍了从零开始使用Vue3和ElementPlus构建后台管理系统的全流程。内容涵盖环境准备、项目初始化、Vite配置、SCSS样式体系搭建、ElementPlus组件库引入与配置,以及封装可复用的SvgIcon组件进行图标管理,旨在帮助开发者快速搭建现代化、可维护的中后台应用。

weixin_29011239的博客 160

解决MATLAB2020B关于找不到vs2019C++编译器问题

解决MATLAB2020B关于找不到vs2019C++编译器问题

wcm2577的博客 7606

在asp.net中有关"弹出对话框"的问题

很多人在问,关于弹出对话框的问题,现总结如下:一:使用js脚本      Response.Write("window.alert(/"Hello World/");");二:为按钮增加click属性:       My_Button.Attributes.Add("onclick","return confirm(您确定删除该记录吗?);");三:使用MessageBox.Show()   

Zhangzs8896(小二) 的专栏 2113

Spring AI从入门到精通:构建智能Spring应用的全面指南

随着人工智能技术的快速发展,将大语言模型(LLM)与企业应用集成已成为趋势。Spring AI作为Spring官方推出的AI集成框架,为开发者提供了便捷、标准化的方式来构建智能应用。本文将从基础概念到高级应用,全面介绍Spring AI的核心功能与实践技巧。Spring AI 是 VMware 于 2023 年推出的开源框架,旨在简化大语言模型(LLM)与 Spring 应用的集成。它提供了统一的 API 抽象,支持多种 LLM 供应商,包括 OpenAI、Azure OpenAI、Hugging Face

qq_36929638的博客 1069

ASP.NET中提交按钮弹出消息框,页面不空白

//这种方法当弹出消息框时背景会变白 Response.Write("<script>alert('背景变白!');</script>"); Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript'...

weixin_30741653的博客 356

一文学会VOS2009对接网关指定走某个落地网关

介绍:  在我们日常使用VOS2009/3000的过程中,肯定会有很多落地网关与对接网关,并且某些时候还需要某些对接网关指定去走某个落地网关或者某些落地网关,从而实现比较精准的控制对接网关与落地网关的关系,下面就演示下在VOS2009/3000中如何配置某个对接网关指定走某个或者多个落地网关。 实现步骤:  VOS2009可以通过添加固定前缀的方式来指定对接网关走某个落地网关。 比如:  r1对接网关在被叫改写规则里面填写*:a*  r2对接网关在被叫改写规则里填写*:b* 1.登录VOS客户端 2.进入

非著名运维的博客 1963

6.14华为OD机试真题 新系统 - 字符串格式调整 (Java/Py/C/C++/Js/Go)

# **字符串格式调整** > 2026 华为OD机试真题 6月14日华为OD上机新系统考试真题 100 分题型 点击查看华为 OD 机试真题完整目录:[2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解](https://blog.csdn.net/banxia_frontend/article/details/160346662) # 题目描述 输入一个字符串,字符串中只包含大写字母和数字。要求将字符串中的所有数字提取出来,按出现的顺序组

算法大师! 947

asp.net网站页面空白故障解决方法

帮人看一个网站,是ghost克隆后出现空白故障,无论重装IIS还是NETFrameWork都不能正常解析aspx文件一样,遇到aspx显示就是空白页面。最后发现global.aspx的application_error处理中把错误信息擦除了,修改回来让它显示具体错误。发现无法csc写入dll文件到临时目录。解决方法,赋予NetService用户完全控制权限,在%windir%/temp

suxiaojack的专栏 9514

OpenHarmony深度定制:从系统到模块的全景剖析与自定义模块实战

目标:在中新增一个算法库,让产品可直接调用。关闭不用的 20+ 系统部件,ROM 缩小 50 %;为自家芯片新增专用驱动模块,快速点亮开发板;内将核心算法库以部件形式集成,实现商业闭源。万物互联时代,差异化才是护城河。

m0_67505153的博客 1036

Asp.Net 后台注册Js脚本和引用JS文件的方法及作用位置

Asp.Net 后台注册Js脚本和引用JS文件的方法及作用位置 asp:Literal 注册 JS脚本

JKDDennis的专栏 1703

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Asp.net 与Js 相互调用

这这里总结下:js调用asp.net 后台方法 和 asp.net 后台调用前台js 方法 js调用asp.net 后台方法: (1) 前台js<script type="text/javascript" language="javascript">  function Ceshi()  {    var a = "<%=Getstr()%>...

aaa3218181的博客 123

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【转】ASP.NET后台注册javascript脚本方法

ASP.NET使用新增的Page.ClientScript属性在ASP.NET页面上注册和使用Javascript函数. 注意:.NET Framewrok 1.0/1.1中的Page.RegisterStartupScript和Page.RegisterClientScriptBlock方法已经被弃用,这两个用于注册脚本的方法需要一组键/值对,由于方法比较复杂,很可能发生键名冲突.Pag...

weixin_30787531的博客 72

ASP.NET - ASP.NET后台注册javascript脚本方法

注意: .NET Framewrok 1.0/1.1中的Page.RegisterStartupScript 和 Page.RegisterClientScriptBlock方法已经被弃用,这两个用于注册脚本的方法需要一组键/值对,由于方法比较复杂,很可能发生键名冲突.Page.ClientScript属性把所有的脚本注册都放在一起,使代码不容易出错 <1>使用...

weixin_33989780的博客 134

asp.net后台注册js的四种方法

1. 用Response.Write方法  代码如下:  Response.Write("<script type='text/javascript'>alert("keleyi.com");</script>");  此方法缺陷就是不能调用脚本文件中的自定义的函数,只能调用内部函数,具体调用自定义的函数只能在Response.Write写上函数定 义,比如  Respon...

weixin_30379531的博客 76

Javascript与后台相互访问

(1)Javascript访问C#后台变量或函数 A.通过<%=%>的形式访问 var str = "<%=GetStr() %>"; var str = "<%=str1 %>"; B.通过隐藏域访问 <input id="hidden1" type="hidden" runat="server" /> var str = docume...

weixin_30565199的博客 94

如何在后台CS代码文件中调用前台JS文件中的某一个函数

my test code:--> private void load()    {        ClientScript.RegisterStartupScript(this.GetType(), "Shift", "GetXmlValues(" +           XMLName.Shift + ",ctl00_ContentPlaceHolder1_dropShift

jiang0609的专栏 2157

ASP.NET后台输出js的三种方式(写给初学者)

<br />ASP.NET提供了三种后台输出JS的方式:<br />一、后台输出已有js文件<br />首先创建 js文件testjs.js<br />if (!Page.ClientScript.IsClientScriptIncludeRegistered(this.GetType(), "keys"))//判断keys是否已注册过<br />{<br />   Page.ClientScript.RegisterClientScriptInclude("keys", "testjs.js");   

267
上一篇: IT 专业人员应该了解的 Windows 7 十大功能
下一篇: 2009年06月
skyzero110
博客等级 码龄19年 35粉丝 59原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值