• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > Asp.net后台把脚本样式输出到head标签中节省代码冗余

Asp.net后台把脚本样式输出到head标签中节省代码冗余

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了asp.net,asp net培训,asp和asp.net的区别,零基础学asp.net,c#和asp.net的区别等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

 最近在学习开发服务器控件,其它就少不了为控件注册js和css之类的资源文件,或者直接注册纯脚本样式。其中就遇到如下问题:

    1、  注册的资源文件或纯脚本样式在生成的页面中都不在head标签中(当然这个不影响页面功能)

     2、 一个页面使用多个一样的控件时,会出现重复输入(出现多余代码)

           第一个问题说到底也不是什么问题,主要是看个人喜欢。在浏览器里查看页面源代码时,也许就成了问题了,源代码很不整洁,要是内容多时问题就更突出。本来想找脚本,却在head标签里找不到,只能到其它标签里找了。(不知道有没有哪些开发工具在查看源代码时可以把它们都区分开来,以方便查找)

    第二个却实是个问题,也不多说了。

    有问题就应该解决,为了方便看效果,把它改成了后台直接使用,开发服务器控件时也使用,只是不用引用嵌入资源文件。

     代码如下,两个方法:

/// <summary>
        /// 注册资源文件
        /// </summary>
        /// <param name="path">路径</param>
        /// <param name="key">要搜索的客户端资源的键,防止</param>
        /// <param name="type">资源文件类型</param>
        public void RegisterResource(string path, string key, ResType type)
        {
            string resStr = string.Empty;
            switch (type)
            {
                case ResType.Js:
                    resStr = string.Format("<script type=\"text/javascript\" language=\"javascript\" src=\"{0}\"></script>", path);
                    break;
                case ResType.Css:
                    resStr = string.Format("<link href=\"{0}\" rel=\"stylesheet\" type=\"text/css\" />", path);
                    break;
            }
            //是否已输出
            if (!Page.ClientScript.IsClientScriptBlockRegistered(this.GetType(), key))
            {
                if (Page.Header != null)
                {
                    LiteralControl link = new LiteralControl();
                    link.Text = "\r\n" + resStr;
                    Page.Header.Controls.Add(link);
                }
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), key, "", false);//注册资源key
            }
        }
</div>
此方法有三个参数,第一个path是资源文件路径;第二个key是资源文件标识,用来防止重复注册;第三个type,枚举类型,样式和脚本两类。方法也很简单,通过为页面Header控件增加自己定义控件以达到想要的效果。Page.ClientScript.IsClientScriptBlockRegistered(this.GetType(), key)用来检测当前页面实例中此资源文件标识是否已经注册过,Page.ClientScript.RegisterClientScriptBlock(this.GetType(), key, "", false)这个不可少,此作用就是在当前页面实例中注册该资源,其本来之意是注册一个脚本,但此处的脚本为空。

/// <summary>
        /// 注册脚本块(或者样式块)
        /// </summary>
        /// <param name="script"></param>
        /// <param name="key"></param>
        /// <param name="type"></param>
        public void RegisterScript(string script, string key)
        {
            //是否已输出
            if (!Page.ClientScript.IsClientScriptBlockRegistered(this.GetType(), key))
            {
                if (Page.Header != null)
                {
                    LiteralControl link = new LiteralControl();
                    link.Text = "\r\n" + script;
                    Page.Header.Controls.Add(link);
                }
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), key, "", false);//注册资源key
            }
        }
</div>
 此方法有二个参数,第一个script 是脚本块(或者样式块),如<script>******</script>或都<style></style>之类。方法体和上面的差不多,在此就不讲了。

  

  如何使用

 此例在Page_Load方法里使用

           &n

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Asp.net SignalR 应用并实现群聊功能 开源代码
  • asp.net动态更新
  • asp.net利用母版制作页脚效果
  • Asp.Net服务器发送HTTP标头后无法设置内容类型的问题解决
  • 使用asp.net mvc,boostrap及knockout.js开发微信自定义菜单编辑工具(推荐)
  • 详解ASP.NET MVC 常用扩展点:过滤器、模型绑定
  • ASP.NET Core发送邮件的方法
  • 在ASP.NET Core 中发送邮件的实现方法(必看篇)
  • ASP.NET MVC从视图传参到控制器的几种形式
  • Asp.net core WebApi 使用Swagger生成帮助页实例

相关文章

  • 2017-05-11asp.net 简单工厂模式和工厂方法模式之论述
  • 2017-05-11VS2010/VS2013项目创建 ADO.NET连接mysql/sql server详细步骤
  • 2017-05-11ASP.NET repeater添加序号列的方法
  • 2017-05-11silverlight用webclient大文件上传的实例代码
  • 2017-05-11asp.net 操作excel的实现代码
  • 2017-05-11Asp.net中使用DapperExtensions和反射来实现一个通用搜索
  • 2017-05-11asp.net动态载入用户控件的方法
  • 2018-08-20http转https的实战记录(iis 7.5)
  • 2017-05-11asp.net中实体类对象赋值到表单的实现代码
  • 2017-05-11ASP.NET MVC3手把手教你构建Web

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • IIS7伪静态web.config配置的方法和规则
    • asp.net中操作Excel助手相关代码
    • 调试ASP.NET应用程序的方法和技巧
    • 集合类List与Dictonary实例练习
    • ASP.NET中验证控件的使用方法
    • 浅析.net简单工厂模式
    • .Net 项目代码风格要求小结
    • 一步步打造简单的MVC电商网站BooksStore(2)
    • 初识 ASP.NET Membership 用户管理
    • ASP.NET中后台注册js脚本使用的方法对比

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有