我有一个外部 js 文件,它基本上是一个 js 对象。我使用 ScriptManager.RegisterClientScriptInclude 方法将文件包含在页面上,之后我使用 ScriptManager.RegisterClientScriptBlock 方法调用 js 对象的方法,但收到“DynamicLoadingPanel 未定义”的 js 错误。我知道当我将它放在 aspx 页面中时该方法调用可以工作,但我认为我得到了 ScriptManager 注册脚本 block 时的计时错误原因。我目前在 Page_Load 事件中有寄存器,下面是我的代码。有人可以帮我理解这里发生了什么吗?谢谢。
Page_Load事件
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.ClientScript.IsClientScriptIncludeRegistered("DynamicLoadingPanel"))
{
ScriptManager.RegisterClientScriptInclude(Page, typeof(Page), "DynamicLoadingPanel", "~/dynamicLoadingPanel.js");
ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "set_LoadingPanelID", "DynamicLoadingPanel.set_loadingPanelID('modalLayer');", true);
}
}
最佳答案
经过几次尝试和错误,我终于找到了包含外部js文件的正确方法。因此,对于所有遇到此问题的人,我希望这可以为您节省几个令人沮丧的时间。
要包含您的文件,您必须获取当前 ScriptManager 的对象并将该文件添加到 Scripts 集合中。下面是一个例子。
ScriptManager sm = ScriptManager.GetCurrent(Page);
ScriptReference sr = new ScriptReference("~/scripts/dynamicLoadingPanel.js");
if (!sm.Scripts.Contains(sr))
sm.Scripts.Add(sr);
关于c# - ScriptManager.RegisterClientScriptIninclude 之后的 Javascript 对象 "is not defined"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2313882/