在aspx中注册javascript调用web.config

在aspx中注册javascript调用web.config,javascript,asp.net,Javascript,Asp.net,我正在努力使我的应用程序更加灵活。我使用的是第三方组件(富文本编辑器)。在使用组件的页面上,我需要注册一些javascript。目前,这是这样做的: <script type="text/javascript" src="../../Resources/Xinha/my_config.js"></script> 我尝试了一些选择,像这个,但没有一个有效 <script type="text/javascript" src="<%=Configuratio

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

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

我尝试了一些选择,像这个,但没有一个有效

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

有没有关于我遗漏了什么的建议,或者这不可能?
提前感谢。

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

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

要包含它的行如下所示:

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

您所做的肯定是可能的,但它确实会对ASP.NET的ajax实现造成一些破坏-ASP.NET ajax不喜欢标题中的“”

您可以从代码隐藏中尝试以下任一方法,以获得更安全的效果:

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

更新:

根据不使用相对路径的建议,我完全同意。如果希望有一个路径可以在整个站点中运行,但可以从web.config引用,请将其设置为虚拟路径:

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

然后在
页面中使用scriptPath.ClientScript.RegisterClientScriptInclude
ScriptManager.RegisterClientScriptInclude
调用。

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

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);
        }
受保护的无效页面加载(对象发送方,事件参数e)
{
文字l=新文字();
l、 Text=“”;
this.Page.Header.Controls.Add(l);
}

对于1页,我有3个对该路径的引用。假设我在我的应用程序的10个地方使用这个组件,我需要做30个更改,如果我没有忘记的话。我认为这样做更容易。将runat server属性添加到script标记中,并使用~simbol使其与根相对?也许你可以添加一个脚本管理器并在那里注册脚本。据我所知,我不使用AJAX。这些行,这些是在页面加载中出现的?在aspx页面本身中没有办法解决这个问题?@djerry-如果你使用。。。您可以将相同的编码逻辑(在页面加载处理程序中)放在表示文件中,但我不建议嵌入“我知道”,我不是说或建议这是一种不好的做法,但我们更喜欢apsxwise@djerry-那就用你原来的代码吧?此时理解问题有困难-您的代码应该可以正常工作。(假设您已将System.Configuration命名空间导入到演示文稿[aspx]文件中)。
string scriptPath = VirtualPathUtility.ToAbsolute(ConfigurationManager.AppSettings["myScript"]);
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);
        }