在aspx中调用web.config中的javascript注册

时间:2011-08-01 14:25:38

标签: javascript asp.net

我正在尝试让我的应用更灵活。我正在使用第三方组件(富文本编辑器)。在页面上使用组件,我需要注册一些javascript。目前,这样做是这样的:

<script type="text/javascript" src="../../Resources/Xinha/my_config.js"></script>

我尝试了一些选项,比如这个选项,但都没有。

<script type="text/javascript" src="<%=ConfigurationSettings.AppSettings["Xinha.PathToPackage"]%>/XinhaCore.js"></script>

对于我遗失的内容是否有任何建议或者这不是可能的? 提前谢谢。

3 个答案:

答案 0 :(得分:0)

您应该使用站点根相对路径。来自MSDN:

  

站点根目录相对路径,针对站点根目录进行解析。   如果保留资源,则站点根相对路径非常有用   在整个网站中使用,例如图像或客户端脚本文件   位于网站根目录下的文件夹。

包含它的行看起来像:

<script type="text/javascript" src="/Resources/Xinha/my_config.js"></script>

答案 1 :(得分:0)

你正在做的事情肯定是可能的,但它确实会造成一些破坏与ASP.NET的ajax实现 - ASP.NET Ajax不喜欢“&lt;%=%&gt;”在标题中......

你可以从后面的代码中尝试这些方法中的任何一种,以获得更安全的东西:

    ScriptManager.RegisterClientScriptInclude(this, this.GetType(), "scriptFromConfig", ConfigurationManager.AppSettings["myScriptUrl"]);

OR

    Page.ClientScript.RegisterClientScriptInclude("scriptFromConfig", ConfigurationManager.AppSettings["myScriptUrl"]);

更新:

根据你不使用相对路径的建议,我完全同意。如果您想拥有一个适用于整个站点但从web.config引用的路径,请将其设为虚拟路径:

<add key="myScript" value="~/scripts/someScript.js"/>

然后在你的代码中:

string scriptPath = VirtualPathUtility.ToAbsolute(ConfigurationManager.AppSettings["myScript"]);

然后在Page.ClientScript.RegisterClientScriptIncludeScriptManager.RegisterClientScriptInclude来电中使用scriptPath。

答案 2 :(得分:-1)

使用以下代码,它将完成工作:

protected void Page_Load(object sender, EventArgs e)
        {
            Literal l = new Literal();
            l.Text = "<script type='text/javascript' src='../../Resources/Xinha/my_config.js'></script>";
            this.Page.Header.Controls.Add(l);
        }