[导入]Asp.net中动态在中加入Scrpit标签

许久以前,写过一篇《asp.net页中动态加入样式表文件》,后来发现在使用时如果每页都写这么个函数真是很麻烦,于是自己写了一个Page的派生。将这个函数加了进去。
      /**//// <summary>
    
/// 作者 邹健
    
/// 日期 20070202
    
/// 重载的Page类。
    
/// </summary>
    public class ChPage : Page {
        
/**//// <summary>
        
/// 构造函数。
        
/// </summary>
        public ChPage() { }
        
/**//// <summary>
        
/// Render函数。
        
/// </summary>
        
/// <param name="writer">HtmlTextWriter。</param>
        protected override void Render(HtmlTextWriter writer) {
            
if (writer is System.Web.UI.Html32TextWriter) {
                writer 
= new FormFixerHtml32TextWriter(writer.InnerWriter);
            }
            
else {
                writer 
= new FormFixerHtmlTextWriter(writer.InnerWriter);
            }
            
base.Render(writer);
        }
        
/**//// <summary>
        
/// 设置Html标签内,的Link标签,如Css
        
/// </summary>
        
/// <param name="cssfile">Css文件。</param>
        protected void SetHtmlLink(string cssfile) {
            HtmlLink myHtmlLink 
= new HtmlLink();
            myHtmlLink.Href 
= cssfile;
            myHtmlLink.Attributes.Add(
"rel""stylesheet");
            myHtmlLink.Attributes.Add(
"type""text/css");
            Page.Header.Controls.Add(myHtmlLink);
        }
        
/**//// <summary>
        
/// 该函数可获得web.config中的字符串。
        
/// </summary>
        
/// <param name="Str">指定项的键值。</param>
        
/// <returns>返回键值所指的值。</returns>
        protected string GetString(string Str) {
            
return System.Configuration.ConfigurationManager.AppSettings[Str];
        }
    }

但是后来发现在使用asp.net编程时,如果应用模板页的话,不止是css文件不容易后往里添,javascript文件也是如此,虽然说在模板页的<head />中建一个contentplaceholder也算可以,但那种方法毕竟不太雅,有失风范。于是就想按这种添加<link />标签的方法来泡制<script />
但发现在System.Web.UI.HtmlControls中有HtmlLink来表现<link />但却没有表现<Script />标签的类。
没办法了,因为懒所以只能自己写一个了,代码不长,如下。
namespace Chsword.Class {
    
/// <summary>
    
/// 可以生成script标签
    
/// </summary>
    [ControlBuilder(typeof(HtmlEmptyTagControlBuilder)), AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal), AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
    
public class HtmlScript : HtmlControl {
        
// Methods
        public HtmlScript()
            : 
base("script") {
        }
        
protected override void Render(HtmlTextWriter writer) {
            writer.WriteBeginTag(
this.TagName);
            
this.RenderAttributes(writer);
            writer.Write(">");
            writer.WriteEndTag(TagName);
        }
        
protected override void RenderAttributes(HtmlTextWriter writer) {
            
if (!string.IsNullOrEmpty(this.Src)) {
                
base.Attributes["src"= base.ResolveClientUrl(this.Src);
            }
            
base.Attributes["type"= "text/javascript";
            
base.RenderAttributes(writer);
        }
        
/// <summary>
        
/// 脚本的URL
        
/// </summary>
        [UrlProperty]
        [DefaultValue(
"")]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        
public virtual string Src {
            
get {
                
string text = base.Attributes["src"];
                
if (text == null) {
                    
return string.Empty;
                }
                
return text;
            }
            
set {
                
base.Attributes["src"= MapStringAttributeToString(value);
            }
        }
        
string MapStringAttributeToString(string s) {
            
if ((s != null&& (s.Length == 0)) {
                
return null;
            }
            
return s;
        }
    }
}
随后我又在原来重 写的ChPage类中添加了一个函数
        /// <summary>
        
/// 设置script现在只能是type=text/javsscript的
        
/// </summary>
        
/// <param name="src">脚本地址</param>
        protected void SetHtmlScript(string src) {
            HtmlScript myHtmlScript 
= new HtmlScript();
            myHtmlScript.Src 
= src;
            Page.Header.Controls.Add(myHtmlScript);
        }

使用方法

原来的页面脚本是这样的
vb.net
Partial Class DefaultClass Default
    
Inherits Page
C#应该类似Default : Page
现在只要改成
Partial Class DefaultClass Default
    
Inherits ChPage
C#相应为 Default:ChPage
就可以了

使用时只要在载入前的某个事件,比如Init或Load写 SetHtmlScript("/Javascript/MicrosoftAjax.js")
这样就OK了
 
直接再看看生成的HTML,吼吼,已经有你添加的<script src=""/Javascript/MicrosoftAjax.js" type="text/javascript"></script>了

本如果文章中有不足的地方请大家要提出啊
文章来自chsword[邹健的博客]允许转载麻烦留言


838870.html

邹健 2007-08-01 12:47 发表评论

文章来源:http://www.cnblogs.com/chsword/archive/2007/08/01/838870.html

转载于:https://www.cnblogs.com/wallis0922/archive/2007/08/28/872321.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 多布局

做为最后的方法&#xff0c;也是最后一个才会考虑的方法&#xff0c;那就是为不同的尺寸界面单独写布局。不到万不得已不要用这个方法&#xff0c;相信不少人和我一样都被逼着用过这个方法吧。需要说明的是&#xff0c;横竖屏切换使用不同布局也是用这个方法解决的&#xff1b;…

万万想不到:吸烟的辐射量比原子弹爆炸点还厉害!

全世界只有3.14 %的人关注了青少年数学之旅近日&#xff0c;外国视频网站上一段关于世界上辐射最高地点的短片火了起来。片中&#xff0c;一位外国小哥亲身探秘了那些广为人知的辐射地点如切尔诺贝利、福岛核电站等&#xff0c;并且给出了究竟哪里的辐射最高的结论。什么是辐射…

视频专辑:Hibernate 视频

为什么80%的码农都做不了架构师&#xff1f;>>> 专辑&#xff1a;Hibernate 视频 简介:郭宏志 Hibernate从入门到深入,郭宏志气主讲 1 郭宏志 Hibernate 01 简介 2013-10-29 13:50 | 播放(11) | 评论(0) | 时长:1:17:58 2 郭宏志 Hibernate 02 配置 2013-10-29…

人体的血管连起来竟能绕地球两圈!?| 今日最佳

世界只有3.14 % 的人关注了青少年数学之旅你知道怎么回复吗&#xff1f;这五花肉真。。白啊来自唐代的敦煌文书。。。《放妻书》好像发现了点什么不可告人的秘密如果人体的血管首尾相连总长度约为96560.64千米大概可以绕地球2.5圈密集恐惧症表示已经qu世了&#xff08;图源网络…

云原生系统之弹性模式

大纲1.云原生系统的弹性模式resiliency pattern 1.1 服务故障的雪崩效应 1.2 回应之前云原生--弹性请求的疑问&#xff1f;2. 弹性模式&#xff1a;作用在下游请求消息上3. 短期中断的响应码4. Polly经典策略5. Golang 断路器模式德国哲学家尼采说过&#xff1a;那些杀…

js null加法的处理

首先看一段JS高级编程中&#xff0c;有关加法()操作符的解释&#xff1a;一个简单的测试&#xff1a;alert(3 null); // 3 alert(3 null); // 3null可见对于null的处理&#xff0c;并不是简单的取String。ecma262的定义如下&#xff1a;对第7、8步骤的理解&#xff1a;7. 如果…

符合WEB标准的div+css导航下拉菜单

<html xmlns"http://www.w3.org/1999/xhtml"lang"zh-CN"><head><meta http-equiv"Content-Type"content"text/html; charsetgb2312"/><title>52css.com - css菜单演示</title><style type"text…

深入DataGrid分页样式实例

DataGrid提供了分页功能&#xff0c;不过看上去功能有限&#xff0c;但是我们可以通过DataGrid的一些属性来获取状态以及增加首页、尾页功能按钮。这里没有使用DataGrid的自定义分页功能&#xff0c;如果在速度效率不是很讲究的情况下&#xff0c;由DataGrid自己管理分页还是不…

dotnet中的counter

打造一个完善的软件产品&#xff0c;准确完整实现业务是第一步&#xff0c;再有就是有优秀的性能&#xff0c;稳定的运行。为了能量化性能指标&#xff0c;需要利用工具&#xff0c;来收集这些数据&#xff0c;以便对产品作出代码级调整。先说一下.net中带一个全局工具&#xf…

与殿堂级大师隔空对话——一张纸是怎么限制了我们的想象力

▲ 点击查看七天假期&#xff0c;熊孩子在家捣乱的情况实在是太多啦&#xff0c;就一眨眼的功夫&#xff0c;满地的积木&#xff0c;到处都有&#xff0c;还有到处都是的纸张碎片&#xff0c;真真是十分的头疼&#xff01;在蚊子小时候&#xff0c;玩具远不如现在丰富&#x…

Redis学习手册(String数据类型)

2019独角兽企业重金招聘Python工程师标准>>> 一、概述&#xff1a; 字符串类型是Redis中最为基础的数据存储类型&#xff0c;它在Redis中是二进制安全的&#xff0c;这便意味着该类型可以接受任何格式的数据&#xff0c;如JPEG图像数据或Json对象描述信息等。…

DDD与批量操作

原文链接&#xff1a;https://enterprisecraftsmanship.com/posts/ddd-bulk-operations/将批量操作与领域驱动设计相结合是一个困难的问题。在这篇文章中&#xff0c;我们将看看为什么会这样&#xff0c;并讨论如何结合两个。本文也是对读者提问的回应。这个问题包含一个有趣的…

乔布斯死后的300亿遗产终于被败光了,没想到竟是干了这件事

全世界只有3.14 %的人关注了青少年数学之旅前段时间&#xff0c;果粉们翘首以待的科&#xff08;ping&#xff09;技&#xff08;guo&#xff09;界&#xff08;fa&#xff09;春&#xff08;bu&#xff09;晚&#xff08;hui&#xff09;又如期而至。每年一到新款 iPhone 发布…

博客群发(2)--实现登陆

模板方法 python也是一种面向对象的语言&#xff0c;所以在实现群发的时候&#xff0c;会登陆不同的网站&#xff0c;但是登陆的方法什么的不尽相同&#xff0c;所以这里想到的是模板方法。 模板方法模式&#xff1a; 应用特性&#xff1a;重复做相同逻辑的事情&#xff0c;但是…

flask取mysql数据很慢_[flask 优化] 由flask-bootstrap,flask-moment引起的访问速度慢的原因及解决办法...

一周时间快速阅读了400页的《javascript基础教程》&#xff0c;理解了主要概念。解决了一个很久之前的疑问。我的网站是使用flask框架搭建的&#xff0c;介绍flask web的一本著名的书(之前提到过)作者搭建个人博客时&#xff0c;向读者推荐了flask-bootstrap,flask_moment这两个…

运维管理工具-- Deploy Assistant

Deploy Assistant 好用的运维管理工具&#xff0c;目前只支持了docker,后续会继续开发手机端&#xff0c;以及其他的功能&#xff0c;如k8s,mysql,redis等。系统采用ssh登录Linux系统&#xff0c;调用docker api的模式开发&#xff0c;支持账号密码&#xff0c;证书登录 支持do…

空调冷冻水系统控制

空调冷冻水系统控制 张红霞 摘要&#xff1a;通过某大厦空调冷冻水系统控制的介绍&#xff0c;表明只有在空调设计人员提供了准确的控制、测量 参数的基础下&#xff0c;才能实现冷水机组自动控制的目的&#xff0c;满足空调的设计要求。 Control of Refrigerating Water Syste…

用Python进行数据探索,探索竞赛优胜方案

全世界只有3.14 %的人关注了青少年数学之旅AI这个词相信大家都非常熟悉&#xff0c;近几年来人工智能圈子格外热闹&#xff0c;光是AlphoGo就让大家对它刮目相看。随着大数据时代信息科技的快速发展&#xff0c;各种各样的数据充斥着我们的生活。而我们又当如何有效利用数据&am…

微结构设计能力看国产CPU发展

当下&#xff0c;国内CPU公司可以大致分为泾渭分明的两条技术路线&#xff0c;分别是自主研发路线和技术引进路线&#xff0c;从实践上看&#xff0c;自主CPU架构改进能力和IPC提升能力要明显优于技术引进CPU&#xff0c;在研发上更具发展后劲。 FT CPU IPC进步相对有限2013年的…

看到这块Google的“墓地”,心中作何感想?| 今日最佳

世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源网络&#xff0c;侵权删&#xff09;