none
自定义控件用到的css文件、js文件怎样加到引用页面的表头中? RRS feed

  • 问题

  • 页面:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="myCtrl.aspx.cs" Inherits="WebApplication1.myCtrl" %>
    <%@ Register src="WebUserControl1.ascx" tagname="WUC" tagprefix="uc1" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <uc1:WUC runat="server" ID="id1" Text="abcde" />
        </div>
        </form>
    </body>
    </html>

    其中:WUC是个自定义控件,它是WebUserControl1。

    现在我假设WebUserControl1要使用JScript1.js,如何在控件的代码中注册到页面中去?

    控件的代码中是指UserControl1.ascx.cs

    2017年12月24日 6:36

答案

  • 动态向页面添加css、js文件的方法:

            protected void Page_Load(object sender, EventArgs e) {
                HtmlLink CssControl = new HtmlLink();
                CssControl.Href = "Stylesheet1.css";
                CssControl.Attributes.Add("rel", "stylesheet");
                CssControl.Attributes.Add("type", "text/css");
                Header.Controls.Add(CssControl);
    
                HtmlGenericControl js = new HtmlGenericControl("script");
                js.Attributes.Add("type", "text/javascript");
                js.Attributes.Add("src", "JScript1.js");
                Header.Controls.Add(js);
            }
    

    • 已标记为答案 呆子陈 2017年12月24日 11:43
    2017年12月24日 9:03
  • 运行顺序是:

    UserControl的OnInit()

    Page的OnInit()

    Page的Page_Load()

    UserControl的Page_Load()

    所以,控件向页面提供css、js文件的申请放在UserControl的OnInit()中

    页面注册css、js文件的过程放在Page的OnInit()中。


    • 已标记为答案 呆子陈 2017年12月24日 11:43
    2017年12月24日 9:57
  • 用HttpContext.Current.Items来传递css、js文件名。成功实现
    • 已标记为答案 呆子陈 2017年12月24日 11:43
    2017年12月24日 11:42

全部回复

  • 动态向页面添加css、js文件的方法:

            protected void Page_Load(object sender, EventArgs e) {
                HtmlLink CssControl = new HtmlLink();
                CssControl.Href = "Stylesheet1.css";
                CssControl.Attributes.Add("rel", "stylesheet");
                CssControl.Attributes.Add("type", "text/css");
                Header.Controls.Add(CssControl);
    
                HtmlGenericControl js = new HtmlGenericControl("script");
                js.Attributes.Add("type", "text/javascript");
                js.Attributes.Add("src", "JScript1.js");
                Header.Controls.Add(js);
            }
    

    • 已标记为答案 呆子陈 2017年12月24日 11:43
    2017年12月24日 9:03
  • 运行顺序是:

    UserControl的OnInit()

    Page的OnInit()

    Page的Page_Load()

    UserControl的Page_Load()

    所以,控件向页面提供css、js文件的申请放在UserControl的OnInit()中

    页面注册css、js文件的过程放在Page的OnInit()中。


    • 已标记为答案 呆子陈 2017年12月24日 11:43
    2017年12月24日 9:57
  • 用HttpContext.Current.Items来传递css、js文件名。成功实现
    • 已标记为答案 呆子陈 2017年12月24日 11:43
    2017年12月24日 11:42