ASP.net客户端脚本顺序问题



我在页面上有一个客户端脚本,它调用由使用ClientScript.RegisterStartupScript的用户控件生成的动态脚本。用户控制脚本是动态的,页面是静态的。

问题我有,是页面客户端脚本无法找到用户控件呈现的功能。方法签名匹配,一切都很好。

但是,用户控制脚本包含在静态脚本之后的页面上。这会有什么不同吗?如果是这样,有没有办法在静态脚本之前呈现脚本-根据MSDN api文档,唯一的方法是将所有脚本合并为一个。

我没有这样做的奢侈,因为动态脚本使用用户控件的ClientID来唯一地标识自己——用户控件不止出现一次。

是否有一个简单的方法来解决这个问题?

欢呼

我的建议是让这个"动态"脚本成为一个静态脚本,它以控件id(s)作为参数。例如,你可以这样写:

function MyFunction(dynamicElementID)
{
    var myelement  =document.getElementById(dynamicElementID);
    //do something with myelement... 
}

然后在你的代码后面,你可以这样调用这个脚本:

ClientScript.RegisterStartupScript(this.GetType(),"myscript","MyFunction('"+control.ClientID+"');");

我觉得有点奇怪,你有一个静态脚本知道的动态函数?你能展示一些你的代码吗?我认为可能有一个更好的方法来解决你的依赖。

动态控件通常会将其Id传递给通用静态函数。

最新更新