许久以前,写过一篇《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[邹健的博客]允许转载麻烦留言

Asp.net中动态在中加入Scrpit标签相关推荐

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

    许久以前,写过一篇<asp.net页中动态加入样式表文件>,后来发现在使用时如果每页都写这么个函数真是很麻烦,于是自己写了一个Page的派生.将这个函数加了进去.       /**/// ...

  2. Axure中动态面板中的“推动/拉动原件”

    拉入一个矩形 改变矩形的大小.颜色.边框. 双击矩形,打上文字"菜单1",改变文字大小.颜色.样式. 选中矩形,"右击"跳出选项栏,点击转换为动态面板. 选中动 ...

  3. ASP.NET 如何动态修改 title Meta link标签

    1 修改稿title    对于修改title在页面内直接用 this.title="要修改的title"就可以了 2 修改 Meta标签   主要是用到了 HtmlMeta  H ...

  4. asp.net panel 加html,ASP.NET 页面中动态增加的控件、添加事件

    要求:页面上有一个Add按钮,每点击一次该按钮,页面上动态创建一个WebPartZone! 提醒:WebPartZone只能在OnInit或之前才能创建,否则报异常! 大家都知道,按钮的点击事件是在R ...

  5. Asp.net(C#)动态生成表格中的按钮和事件响应

    最近几天一直在用C#写Asp.net的东西,发觉Asp.net很好用,也不好用,可能自己的认识比较浅,所以还要多多学习.下面是我遇上的一个问题,要动态的生成表格的行,同时在表格中插入按钮相应事件.插入 ...

  6. 在ASP.NET页面中动态添加控件

    今天被问到如何在ASP.NET 页面中动态创建一批控件,并且希望在后续代码中能访问到这些动态创建的控件.我用下面的例子来解释这个问题 ================================= ...

  7. ASP.NET Core 3.0中使用动态控制器路由

    原文:Dynamic controller routing in ASP.NET Core 3.0 作者:Filip W 译文:https://www.cnblogs.com/lwqlun/p/114 ...

  8. ASP.NET 2.0 中动态添加 GridView 模板列

      ASP.NET 2.0 中动态添加 GridView 模板列的例子 动态添加列,关键是实现 ITemplate.InstantiateIn 方法.下面是一个添加 GridView 模板列的例子. ...

  9. ASP.NET 2.0 中动态添加 GridView 模板列的...

    framespacing="0" src="http://what.yesky.com/by/ztdh.htm" frameborder="0&quo ...

最新文章

  1. 谈谈近况,谈谈自由职业,谈谈金饭碗
  2. opencv-学习笔记(5)形态学转变
  3. android 属性动画 弧形,CSS分层动画可以让元素沿弧形路径运动
  4. 面向对象编程的思想(2)
  5. 分布式系统熔断机制的工作原理
  6. 【Android 应用开发】Activity 返回堆栈管理 ( 阶段总结 | 任务栈管理 | 返回堆栈 | 清除返回堆栈 | 亲和性 | 启动模式补充 | standard | singleTop )
  7. python操作redis--------------数据库增删改查
  8. MySql 自适应哈希索引
  9. mysql创建的是拉丁_将MySQL数据库从拉丁转换为UTF-8
  10. 将excel转为python的字典_python读取excel表并把数据转存为字典
  11. ssl1333-地鼠的困境【二分图,最大匹配,图论】
  12. 用户需求源源不断,阿里云网络创新不止
  13. pandas DateTime funcs
  14. 软考信息系统项目管理师_项目进度管理2---软考高级之信息系统项目管理师014
  15. 操作系统---页面置换算法
  16. python笔记:datetime模块中的函数
  17. [Android]OpenGL绘制2D几何图形
  18. VMware虚拟机下Ubuntu系统安装VMware Tools
  19. EndNote的安装与使用
  20. 用python写爬虫(一)初识爬虫

热门文章

  1. [SQL] SQL 基础知识梳理(三) - 聚合和排序
  2. 9月——都已经9月了还不好好刷题?。。
  3. leetcode题解:Search in Rotated Sorted Array(旋转排序数组查找)
  4. 计算硼原子的基态能级B---交换能
  5. 到底应该加几个卷积核?
  6. Loss Function , Cost Function and Kernel Function in ML(To be continued)
  7. 1.7 理解 Dropout-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  8. 一起学nRF51xx 21 -  蓝牙项目工程的初始化流程解读
  9. python每天学习30分钟系列
  10. Android研究-linux内核启动到android系统