【MasterPages实用技巧】为模板增加前端控制②——自动注册客户端全局脚本

Win10 + Linux 双系统删除(Linux) 删除Linux所使用的磁盘分区 进入此电脑->计算机->管理->磁盘管理 阅读详情

让我们先来理解“全局”二字的含义。

HTML页面可以定义客户端脚本,为页面外观提供丰富的可视化行为和逻辑,客户端脚本可以写在<head>或<body>中。写在<head>中的脚本就是文本所指的“全局”脚本,为什么说它是全局的呢?因为<head>中定义的客户端脚本函数可以在<body>中任何地方被访问,而在<head>中函数外部定义的客户端脚本,也能在页面加载后的第一时间,按顺序被浏览器执行,而且能够访问页面中的全部对象。相对的,<body>中的脚本只能按顺序执行,其中定义的函数只能被其后的客户端脚本调用,其访问的页面对象也必须在其之前定义。

由于MasterPages无法正确输出<head>中定义的Region/Content,那么为每一个窗体提供客户端全局脚本注册的任务,同样落在了模板控件的Page_Load事件处理函数身上。

首先,在模板控件中定义<region>(控件代码头部注册Tag部分略,请参考前文):
<body>
   <form id="form1" runat="server">
      ...
      <mp:region id="regScript" runat="server"></mp:region>
      ...
   </form>
</body>

然后,在模板控件的Page_Load事件处理函数内添加代码:
if (regScript.Controls.Count > 0)
{
   System.Web.UI.LiteralControl script = (System.Web.UI.LiteralControl)regScript.Controls[0].Controls[0]; // MasterPages会将content中的内容以LiteralControl放入一个Panel,而把这个Panel再放入region
   this.Page.RegisterClientScriptBlock("client_script", script.Text);
}
RegisterClientScriptBlock是Page类中的一个方法,作用是为窗体注册客户端全局脚本,它有两个参数:第一个参数指定所注册的脚本段名称,如果窗体内已存在同名脚本段,则会替换现有的脚本;第二个参数就是索要注册的脚本内容,必须是完整的包含<script>标记的脚本。

接下来,我们就可以在应用此模板的窗体中定义其自身的客户端全局脚本了:
<mp:contentcontainer runat="server" MasterPageFile="~/Template.ascx" id="Test">
   <mp:content id="regTitle" runat="server">Test页面标题</mp:content>
   <mp:content id="regScript" runat="server">
      <script language="javascript">
         function test()
         {
            alert("Hello World!");
         }

      </script>
   </mp:content>

   <mp:content id="regContent" runat="server">窗体内容测试</mp:content>
</mp:contentcontainer>


从“MasterPages实用技巧”的下一篇开始,我们将不再使用MasterPages,而使用WilsonMasterPages。这是一个免费的MasterPages替代品,它对MasterPages做了改进,修正了MasterPages的一个严重Bug(请参考文章“MasterPage之超严重Bug——将导致窗体内带有回发事件的控件无法回发事件——以及解决方案”。

在下一篇里,你可以了解基于MasterPages的又一个模板前端控制技巧——为窗体添加一个“返回”按钮。

希望能给大家带来帮助,谢谢!

道路场景分割:车道线、可行驶区域与路沿检测 道路场景分割:车道线、可行驶区域与路沿检测​ ,人工智能,计算机视觉,大模型,AI,文章围绕道路场景分割展开,涵盖车道线、可行驶区域与路沿检测。介绍了基本概念、重要性,各部分检测的类型、方法、难点及解决思路,还涉及技术融合、数据集、评价指标、发展趋势、应用案例、代码示例、不同天气处理、实际问题与方案、实现流程、相关技术工具、教育研究应用、产业前景、伦理安全问题及学习资源等,全面阐述了道路场景分割的多方面内容,为相关学习和研究提供了丰富信息。 阅读详情

相关推荐

003:大疆智图新手入门:从下载安装到首次建模实战

本文为大疆智图新手提供从下载安装到首次三维建模的完整实战指南。详细介绍了软件安装的硬件要求、试用许可申请流程,并指导用户如何准备航拍数据或使用开源样例进行首次建模。通过分步操作演示与核心参数设置讲解,帮助初学者快速掌握使用大疆智图进行实景三维重建的核心流程与常见问题解决方案。

t8u9v0的博客 702

前端组件自动注册

前端组件自动注册前端组件自动注册1.创建一个js文件命名autoRegister.js2.在main.js中引入3.在需要的页面用标签的方式引入4.图解步骤5.SvgIcon 组件(在第一段代码的注释里提到的) 前端组件自动注册 组件太多的话写一个注册一个确实有点麻烦 ,使用组件全局自动注册的方式吧。 1.创建一个js文件命名autoRegister.js 在components 里创建一个js文件命名为autoRegister.js。 当然也可以命其他名字,但最好是有语义的,方便后期维护时理解 全局自动注

weixin_48271592的博客 418

【ANSYS APDL】提取结构刚度矩阵完整过程--附Python代码实现

ANSYS的结构刚度矩阵提取中一些操作技巧

m0_61038364的博客 1万+

两个使用Page.ClientScript. 的方法 在后台写script脚本语言

使用Page.ClientScript.RegisterClientScriptInclude 许多开发人员把JavaScript放在一个.js文件中,这是一种最佳实践方式,因为这非常便于对应用程序进行全局的JavaScript修改。使用RegisterClientScriptInclude方法可以在ASP.NET页面上注册脚本文件,如下所示: 实例jsTest01.js文件中的代码:

kankankankan2222的专栏 2884

【SOUND】Linux音频子系统ASoC的驱动框架总分析

ALSA系统在芯片(ASoC)层的总体项目目标是为嵌入式芯片处理器(例如PXA2XX,AU1X00,IMX等)和便携式音频编解码器提供更好的ALSA支持。 在进入ASoC子系统之前,内核对SoC音频有一些支持,但是它有一些局限性:ASoC层旨在解决这些问题并提供以下内容特征 :为了实现这一切,ASoC基本上将嵌入式音频系统分为多个可重复使用的组件驱动程序:另外,这里提下OSS(Open Sound System)这个基本被弃用的音频框架。 可以参考Linux OSS架构声卡驱动框架 2.3 ASoC重要

wang 恒 的博客 1783

整车电检工艺流程

本文是笔者在从事汽车行业智能制造领域过程,对于整车电检工艺流程的理解与总结。

qq_40664711的博客 1万+

asp.net 母版页使用详解

[转]asp.net 母版页使用详解母版页(扩展名是.master)它的使用跟普通的页面一样,可以可视化的设计,也可以编写后置代码。与普通页面不一样的是,它可以包含ContentPlaceHolder控件,ContentPlaceHolder控件就是可以显示内容页面的区域。代码如下:......                                ......注意

liuhuan2099的专栏 1757

EtherCAT用TwinCAT 3跑DC报0x2C或者0x1A错误码

EtherCAT用TwinCAT 3跑DC报0x2C或者0x1A DC报错 ///////////////////////////////////////////////////////////////////////////////////////// /** \brief Checks communication and synchronisation variables and update AL status / AL status code if an error has occurr

PI_sunyang的博客 5308

使用Master Pages 创建风格统一的Site(Master Pages 系列之一)

本篇为Master Pages 系列的第一篇.所以激动无比,因为刚开始写Blog,所以错误有可能在所难免,请各位达人批评指正,在下悉心接受并改正. 介绍: 设计良好的站点LayOut有两个很好的特性.一个就是整个网站保持统一的网站风格,我们可以看下Http://www.asp.met (图1),基本上每个页面都的Top,Bottom,这样能保证网站看起来有统...

weixin_33989058的博客 206

2025年下半年网络规划设计师综合知识真题及答案解析

1983年,ARPANet完成技术转型,对此后的 Internet发展全关重要,这一转型是指( ) A.电路交换转向分组交换 B.商业化转型 C.民用化转型 D.从 NCP 协议转向 TCP/IP 答案:D 解析:ARPANet 最初使用 NCP (Network Control Protocol)协议进行主机问通信。1983年1月1日,ARPANet 正式切换到TCP/IP 协议族,为后续Internet的发展奠定了统一协议基础。

鹿鸣天涯 932

基于STM32L4XX 、HAL库的TMP144YFFR数字温度传感器驱动应用C语言程序设计

define TMP144_ADDRESS 0x00 // 默认为全局地址,用于单器件或MDA命令。#define TMP144_CMD_READ_TEMP 0x00 // 读取温度寄存器命令。if (temp_raw & 0x800) { // 判断第11位(符号位)

PP_Cottage的博客 91

MasterPage母版页嵌套,控件、变量的访问

1. 嵌套母版页(1) 主母版页 MainMasterPage.master <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MainMasterPage.master.cs" Inherits="MainMasterPage" %><!DOCT...

weixin_30242907的博客 286

YOLOv11改进,YOLOv11引入B2CNet的BFAM(双时相特征聚合模块),JSTARS 2024,二次创新C3k2结构

YOLOv11改进,YOLOv11引入B2CNet的BFAM(双时相特征聚合模块),JSTARS 2024,二次创新C3k2结构

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 408

Master Page 初探

Master Page 初探狂※痴(zhangleixp)2006-05-24Master Page (母版页)是VS.NET2005中的新特性,提供了页面模板的功能。该模板是动态的,可以由内容页面自主选择。1 Master Page的组成Master Page主要由两部分组成:Master Page(母版页)本身和一个或多个Content Page(内容页)。1.1母版页

狂※痴(zhangleixp) 4546

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ASP.NET应用程序级缓存的设计思路与实现

【如果有现成的开源或免费缓存组件,要告诉我哦】背景页面包含许多需要显示数据库数据的控件,每次打开页面的效率都很低目标 减少页面响应时间,从而提高用户访问速度 缓存应在用户访问页面之前起作用,而不是像ASP.NET窗体/用户控件缓存那样随用户访问被动创建 能提供全局的缓存策略配置

UNO 4575

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

MasterPage之超严重Bug——将导致窗体内带有回发事件的控件无法回发事件——以及解决方案

这个问题已经有人在msdn上发表了,它的现象为: 当用户访问1、使用了MasterPage的Web窗体2、并且窗体内含带有回发事件的Web服务器端控件(比如LinkButton,这是很常见的,在DataGrid里用得太多了)那么1、页面打开时,IE会报JavaScript脚本错误——某行某个字符后期待";"2、点击那些带有回发事件的Web服务器端控件(比如翻页时),IE会再次提示脚本错误——第1行

UNO 4053

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【MasterPages实用技巧】为模板增加前端控制①——自动生成页面标题

上一回我们已经了解了MasterPages的基本使用方法,但是在实际使用过程中我们也会发现,这样的模板还无法满足要求。笔者首先遇到的问题是页面标题。 对于使用模板的Web窗体来说,它的页面标题应该怎样写?一般情况下,页面标题由HTML的标准元素TITLE标记指定,它存在于HEAD标记内。可现在只有模板控件内存在完整的HTML标记,其他窗体都仅仅是通过MasterPages“引用”了这些公共的HT

UNO 3882

【MasterPages实用技巧】使用MasterPages实现Web窗体模板

如果你是一个网页开发人员,面对大量含有重复内容的页面,你一定希望能利用“模板”定义网页内的公共部分,而每一个页面只需要完成其特有的内容,通过模板生成最终的页面。 熟悉Dreamweaver的网页开发人员都会喜欢其中的模板(Template)功能。但是当我们转换到了ASP.NET平台,却不得不使用一个基本上只能算是文本编辑器的微软开发环境(当然这应该是一个最完美的文本编辑器),微软在图形化网页设计方

UNO 3778

ASP.NET拾萃——服务器端控件篇(二)

技巧二:掌握控件的客户端属性及事件 经常在网上看到类似的问题:如何让ASP.NET服务器端控件响应客户端事件? ASP.NET服务器端控件能够响应服务器端事件,使我们能够像编写Windows程序一样编写网页。可有时我们并不需要让客户端运行的控件和服务器发生交互,这样做的开销是很大的:不仅占用网络带宽、服务器的CPU资源,还会产生一次PostBack导致客户端浏览器“刷新”影响界面效果。 如果直接在

UNO 3600

ASP.NET是微软继MFC之后最无用的框架

【我的这种看法仅针对ASP.NET】MFC做了什么?通过宏提供OOP,以及:封装——   1. WIN32消息循环   2. 回调函数ASP.NET做了什么?提供.NET组件访问,以及:封装——   1. HTML代码(成为"runat=server"控件)   2. 控制b/s之间往返数据所使用的回发javascript(成为__doPostBack)ASP.NET的封装隐藏了许多HTML细节,

UNO 3566

使用ASP.NET开发遵循HTML/XHTML+CSS规范的的Web应用

系统从外到内可以分为: Web应用层作用:从.NET Framework得到客户端的Http请求,并向.NET Framework输出页面的HTML代码内容:ASP.NET窗体、ASP.NET用户控件(UserControl)以及其他页面所需要的资源 控件层作用:为应用层提供通用的界面控件,管理其内部控件并对外输出其自身的HTML代码内容:ASP.NE

UNO 3303

ASP.NET拾萃——服务器端控件篇(一)〖本文对服务器控件有错误认识〗

技巧一:在客户端的JavaScript脚本中获取服务器端控件的值 以前,当我们需要在脚本里访问页面内一个对象的时候,一般都是通过对象的id或name。就像这样—— // ... function getText() {   return document.form1.Text1.value; // Text1就是对象的id } // ... 现在,ASP.NET让我们越来越习惯使用TextBox作

UNO 2958

为什么要自动生成代码?

为什么要自动生成代码?参照Ruby on Rails完全可以做成一个runtime mvc framework for .NET支持数据库增删改查以WebControl为用户提供良好的设计时环境

UNO 2698

runtime mvc framework for .NET

为什么要自动生成代码?参照Ruby on Rails完全可以做成一个runtime mvc framework for .NET支持数据库增删改查以WebControl为用户提供良好的设计时环境未完待续

UNO 2689

ASP.NET拾萃——服务器端控件篇(序)

我们知道,ASP.NET的Web窗体新增了对服务器端控件的支持,其特征是在控件的HTML标记内加入了runat="server"属性。拥有这个标记的控件,其实例将在服务器端生成,由.NET框架负责转换为普通的HTML标记并输出至客户端。这个转换的过程是ASP.NET一个极为重要的基础。为什么呢? 熟悉HTML开发的朋友应该非常了解编写动态网页所需要的控件(FORM、INPUT……)。而ASP.NE

UNO 2512
上一篇: 【MasterPages实用技巧】为模板增加前端控制①——自动生成页面标题
下一篇: runtime mvc framework for .NET
uno
uno
博客等级 码龄26年 14粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值