我正在尝试让我的应用更灵活。我正在使用第三方组件(富文本编辑器)。在页面上使用组件,我需要注册一些javascript。目前,这样做是这样的:
<script type="text/javascript" src="../../Resources/Xinha/my_config.js"></script>
我尝试了一些选项,比如这个选项,但都没有。
<script type="text/javascript" src="<%=ConfigurationSettings.AppSettings["Xinha.PathToPackage"]%>/XinhaCore.js"></script>
对于我遗失的内容是否有任何建议或者这不是可能的? 提前谢谢。
答案 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.RegisterClientScriptInclude
或ScriptManager.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);
}