c# - 不调用 GetScriptReferences

标签 c# asp.net-ajax iscriptcontrol

我编写了一个包含以下内容的自定义控件:

[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);
}

关于c# - 不调用 GetScriptReferences,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1764341/

相关文章:

c# - asp.net 从 iframe 刷新基页

asp.net-mvc - ASP.NET MVC Ajax Form OnFailure 从未调用过!

c# - 我想在将鼠标悬停在 ASP.NET 标签上时显示一条消息

c# - 通过 C# 和 IIS smtp 发送电子邮件时发送多个 header

c# - 在结束过程中回收 native 资源?

c# - JsonSerializerSettings 中指定的错误是否捕获所有异常

c# - Windows Phone 8.1 Google Book REST Api 调用与 HttpClient : HRESULT: 0x80072EFD