我编写了一个自定义控件,其中包含以下内容:
[assembly: System.Web.UI.WebResource("InSysControls.AssignmentLists.AssignmentLists.js", "text/javascript")]
namespace InSysControls
{
[ToolboxData("<{0}:AssignmentLists ID='AssignmentListsID' runat=\"server\"> </{0}:AssignmentLists>"), ParseChildren(true, "Items")]
public class AssignmentLists : CompositeDataBoundControl, IScriptControl, INamingContainer
{
#region IScriptControl Members
public IEnumerable<ScriptDescriptor> GetScriptDescriptors() {
ScriptControlDescriptor descriptor = new ScriptControlDescriptor(this.GetType().FullName, this.ClientID);
yield return descriptor;
}
public IEnumerable<ScriptReference> GetScriptReferences() {
yield return new ScriptReference("InSysControls.AssignmentLists.AssignmentLists.js", "InSysControls");
}
#endregion
}
}
有谁知道为什么 GetScriptDescriptors 或 GetScriptReferences 都不应该被调用的原因?控件的其他部分工作得很好。
您需要将该控件注册为 ScriptControl:
protected override void OnPreRender(EventArgs e)
{
if (!this.DesignMode)
{
// Link the script up with the script manager
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
if (scriptManager != null)
{
scriptManager.RegisterScriptControl(this);
}
}
base.OnPreRender(e);
}
protected override void Render(HtmlTextWriter writer)
{
if (!this.DesignMode)
{
ScriptManager.GetCurrent(this.Page).RegisterScriptDescriptors(this);
}
base.Render(writer);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)