Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net How2:在HttpModule中将js链接放入head元素时要挂接什么事件_Asp.net_Ihttpmodule - Fatal编程技术网

Asp.net How2:在HttpModule中将js链接放入head元素时要挂接什么事件

Asp.net How2:在HttpModule中将js链接放入head元素时要挂接什么事件,asp.net,ihttpmodule,Asp.net,Ihttpmodule,我想让HttpModule从一些简单的配置数据向HEAD元素注入javascripts和css链接。我不确定我应该参加哪项比赛 现在我使用 -context.PreRequestHandlerExecute动态更改母版页 -Context.BeginRequest用于搜索引擎优化 这里有一些帮助 谢谢你给我小费。干杯,X.对于此类功能,HttpHandler是更好的选择。下面是一个结合css和javascript文件的示例;这并不完全是您想要的,但应该让您朝着正确的方向前进:对于这种类型的功能,

我想让HttpModule从一些简单的配置数据向HEAD元素注入javascripts和css链接。我不确定我应该参加哪项比赛

现在我使用
-context.PreRequestHandlerExecute动态更改母版页
-Context.BeginRequest用于搜索引擎优化

这里有一些帮助


谢谢你给我小费。干杯,X.

对于此类功能,HttpHandler是更好的选择。下面是一个结合css和javascript文件的示例;这并不完全是您想要的,但应该让您朝着正确的方向前进:

对于这种类型的功能,HttpHandler是一个更好的选择。下面是一个结合css和javascript文件的示例;这并不完全是您想要的,但应该让您朝着正确的方向前进:

使用系统;
使用System.Web;
使用System.Web.UI;
名称空间YourNamespace
{
公共类模块:IHttpModule
{
公共void Init(HttpApplication上下文)
{
context.PreRequestHandlerExecute+=应用程序_PreRequestHandlerExecute;
}
私有无效应用程序\u PreRequestHandlerExecute(对象发送方,事件参数e)
{
Page Page=HttpContext.Current.CurrentHandler作为页面;
如果(第页!=null)
{
字符串脚本=“/js/jquery.1.3.2.min.js”;
如果(page.Header!=null)
{
string scriptTag=string.Format(“\n”,script);
page.Header.Controls.Add(新的LiteralControl(scriptTag));
}
如果(!page.ClientScript.IsClientScriptIncludeRegistered(page.GetType(),script))已注册,则为else
page.ClientScript.RegisterClientScriptInclude(page.GetType(),script,script);
}
}
public void Dispose(){}
}
}
ASP.Net生命周期:

使用系统;
使用System.Web;
使用System.Web.UI;
名称空间YourNamespace
{
公共类模块:IHttpModule
{
公共void Init(HttpApplication上下文)
{
context.PreRequestHandlerExecute+=应用程序_PreRequestHandlerExecute;
}
私有无效应用程序\u PreRequestHandlerExecute(对象发送方,事件参数e)
{
Page Page=HttpContext.Current.CurrentHandler作为页面;
如果(第页!=null)
{
字符串脚本=“/js/jquery.1.3.2.min.js”;
如果(page.Header!=null)
{
string scriptTag=string.Format(“\n”,script);
page.Header.Controls.Add(新的LiteralControl(scriptTag));
}
如果(!page.ClientScript.IsClientScriptIncludeRegistered(page.GetType(),script))已注册,则为else
page.ClientScript.RegisterClientScriptInclude(page.GetType(),script,script);
}
}
public void Dispose(){}
}
}

ASP.Net生命周期:

以下是我如何实现您在没有HttpModule的情况下所做的事情。我不喜欢httpmodule的想法,因为如果我忘记注册它并且它没有运行,我的应用程序将无法工作,它将是一个不明显的bug。该页面绝对需要包含JS,因此我决定将其放在项目的基本页面类中

我在几年前就实现了这个功能,希望能够包含更多的脚本,它支持css、元标记等。。。。我忘了为什么我使用Page.Header.Controls.Add而不是Page.ClientScript.RegisterClientScriptInclude,但这是有原因的

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;

namespace YourNamespace
{
    public class HeaderIncludesManager
    {
        private List<string> m_IncludedFiles = new List<string>();

        public void IncludeScript(string s)
        {
            IncludeScript(s, null);
        }

        public bool IsIncluded(string file)
        {
            return (m_IncludedFiles.Find(s => s.Equals(file, StringComparison.InvariantCultureIgnoreCase)) != null);
        }

        public void IncludeScript(string script, string condition)
        {
            Page page = HttpContext.Current.CurrentHandler as Page;
            if (!IsIncluded(script) || page == null)
                return;

            string scriptFile = string.Format("/{0}/{1}?v={2}", MyConfig.JSDir, script, MyConfig.BuildNumber);
            if (page.Header != null)
            {
                string scriptTag = String.Format("<script language=\"javascript\" type=\"text/javascript\" src=\"{0}\"></script>\n", scriptFile);
                if (!String.IsNullOrEmpty(condition))
                    scriptTag = String.Format("<!--[{0}]><script language=\"javascript\" type=\"text/javascript\" src=\"{1}\"></script><![endif]-->\n", condition, scriptFile);

                page.Header.Controls.Add(new LiteralControl(scriptTag));
                m_IncludedFiles.Add(script);
            }
            else if (!page.ClientScript.IsClientScriptIncludeRegistered(GetType(), scriptFile))
            {
                page.ClientScript.RegisterClientScriptInclude(GetType(), scriptFile, scriptFile);
                m_IncludedFiles.Add(script);
            }
        }

        public void IncludeCss(string css)
        {
            Page page = HttpContext.Current.CurrentHandler as Page;
            if (!IsIncluded(css) || page == null)
                return;

            string cssfile = string.Format("/{0}/{1}?v={2}", MyConfig.CssDir, css, MyConfig.BuildNumber);
            if (page.Header != null)
            {
                ((Page)HttpContext.Current.CurrentHandler).Header.Controls.Add(new LiteralControl(String.Format("<link href=\"{0}\" rel=\"stylesheet\" type=\"text/css\" />\n", cssfile)));                    
                m_IncludedFiles.Add(css);
            }
        }

        public void IncludeJQuery()
        {
            IncludeScript("jquery-1.2.3.min.js");
        }

        public void IncludeJQueryUI()
        {
            IncludeJQuery();
            IncludeScript("jquery.ui.1.0.min.js");
            IncludeCss("jquery-theme.css");
        }

        public void IncludeFlotScripts()
        {
            IncludeJQuery();
            IncludeScript("flot/jquery.flot.js");
            IncludeScript("flot/excanvas.pack.js", "if IE");
        }
    }

    public class MyPage : Page
    {
        public HeaderIncludesManager HeaderIncludes = new HeaderIncludesManager();
    }

    public class MyControl : UserControl
    {
        public new MyPage Page
        {
            get
            {
                return (MyPage)base.Page;
            }
        }
    }

    public class SomeControlThatNeedsScripts : MyControl
    {
        protected override void OnLoad(EventArgs e)
        {
            Page.HeaderIncludes.IncludeJQueryUI();
            base.OnLoad(e);
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Web;
使用System.Web.UI;
名称空间YourNamespace
{
公共类校长俱乐部经理
{
私有列表m_IncludedFiles=新列表();
公共void includeDescription(字符串s)
{
includeDescript(s,空);
}
包含公共bool(字符串文件)
{
return(m_IncludedFiles.Find(s=>s.Equals(file,StringComparison.InvariantCultureIgnoreCase))!=null);
}
public void IncludeScript(字符串脚本、字符串条件)
{
Page Page=HttpContext.Current.CurrentHandler作为页面;
如果(!IsIncluded(script)| | page==null)
返回;
string scriptFile=string.Format(“/{0}/{1}?v={2}”,MyConfig.JSDir,script,MyConfig.BuildNumber);
如果(page.Header!=null)
{
string scriptTag=string.Format(“\n”,scriptFile);
如果(!String.IsNullOrEmpty(条件))
scriptTag=String.Format(“\n”,条件,脚本文件);
page.Header.Controls.Add(新的LiteralControl(scriptTag));
m_IncludedFiles.Add(脚本);
}
如果(!page.ClientScript.IsClientScriptIncludeRegistered(GetType(),scriptFile))已注册,则为else
{
page.ClientScript.RegisterClientScriptInclude(GetType(),scriptFile,scriptFile);
m_IncludedFiles.Add(脚本);
}
}
公共void includecs(字符串css)
{
Page Page=HttpContext.Current.CurrentHandler作为页面;
如果(!IsIncluded(css)| | page==null)
返回;
string cssfile=string.Format(“/{0}/{1}?v={2}”,MyConfig.CssDir,css,MyConfig.BuildNumber);
如果(page.Header!=null)
{
((第页)HttpContext.Current.CurrentHandler.Header.Controls.Add(新的LiteralControl(String.Format(“\n”,cssfile)));
m_IncludedFiles.Add(css);
}
}
public void IncludeJQuery()
{
includeDescript(“jquery-1.2.3.min.js”);
}
公共无效,包括jqueryui()
{
IncludeJQuery();
includeDescript(“jquery.ui.1.0.min.js”);
我
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;

namespace YourNamespace
{
    public class HeaderIncludesManager
    {
        private List<string> m_IncludedFiles = new List<string>();

        public void IncludeScript(string s)
        {
            IncludeScript(s, null);
        }

        public bool IsIncluded(string file)
        {
            return (m_IncludedFiles.Find(s => s.Equals(file, StringComparison.InvariantCultureIgnoreCase)) != null);
        }

        public void IncludeScript(string script, string condition)
        {
            Page page = HttpContext.Current.CurrentHandler as Page;
            if (!IsIncluded(script) || page == null)
                return;

            string scriptFile = string.Format("/{0}/{1}?v={2}", MyConfig.JSDir, script, MyConfig.BuildNumber);
            if (page.Header != null)
            {
                string scriptTag = String.Format("<script language=\"javascript\" type=\"text/javascript\" src=\"{0}\"></script>\n", scriptFile);
                if (!String.IsNullOrEmpty(condition))
                    scriptTag = String.Format("<!--[{0}]><script language=\"javascript\" type=\"text/javascript\" src=\"{1}\"></script><![endif]-->\n", condition, scriptFile);

                page.Header.Controls.Add(new LiteralControl(scriptTag));
                m_IncludedFiles.Add(script);
            }
            else if (!page.ClientScript.IsClientScriptIncludeRegistered(GetType(), scriptFile))
            {
                page.ClientScript.RegisterClientScriptInclude(GetType(), scriptFile, scriptFile);
                m_IncludedFiles.Add(script);
            }
        }

        public void IncludeCss(string css)
        {
            Page page = HttpContext.Current.CurrentHandler as Page;
            if (!IsIncluded(css) || page == null)
                return;

            string cssfile = string.Format("/{0}/{1}?v={2}", MyConfig.CssDir, css, MyConfig.BuildNumber);
            if (page.Header != null)
            {
                ((Page)HttpContext.Current.CurrentHandler).Header.Controls.Add(new LiteralControl(String.Format("<link href=\"{0}\" rel=\"stylesheet\" type=\"text/css\" />\n", cssfile)));                    
                m_IncludedFiles.Add(css);
            }
        }

        public void IncludeJQuery()
        {
            IncludeScript("jquery-1.2.3.min.js");
        }

        public void IncludeJQueryUI()
        {
            IncludeJQuery();
            IncludeScript("jquery.ui.1.0.min.js");
            IncludeCss("jquery-theme.css");
        }

        public void IncludeFlotScripts()
        {
            IncludeJQuery();
            IncludeScript("flot/jquery.flot.js");
            IncludeScript("flot/excanvas.pack.js", "if IE");
        }
    }

    public class MyPage : Page
    {
        public HeaderIncludesManager HeaderIncludes = new HeaderIncludesManager();
    }

    public class MyControl : UserControl
    {
        public new MyPage Page
        {
            get
            {
                return (MyPage)base.Page;
            }
        }
    }

    public class SomeControlThatNeedsScripts : MyControl
    {
        protected override void OnLoad(EventArgs e)
        {
            Page.HeaderIncludes.IncludeJQueryUI();
            base.OnLoad(e);
        }
    }
}