asp.net - 未在脚本控件上调用 GetScriptDescriptors

标签 asp.net asp.net-ajax

我正在为 asp.net Ajax 构建脚本控件,虽然我可以调用 GetScriptReferences() 函数,但我无法调用 GetScriptDescriptors().

我已经尝试从 ScriptControlScriptControlBaseIScriptControl 派生。我正在使用页面脚本管理器注册控件,但我仍然无法调用要调用的函数?

关于我可能错过的任何想法?

public class FilterGroupingControl : CompositeControl, IScriptControl
{
    public List<FilterGrouping> Groupings { get; set; }

    public FilterGroupingControl()
    {
        this.Groupings = new List<FilterGrouping>();
    }

    protected override void OnPreRender(EventArgs e)
    {
        #region register control with script manager

        ScriptManager scriptManager = ScriptManager.GetCurrent(Page);
        if (scriptManager == null)
            throw new InvalidOperationException("There must be a script manager on the page");
        scriptManager.RegisterScriptControl(this);

        #endregion

        base.OnPreRender(e);
    }

    public IEnumerable<ScriptDescriptor> GetScriptDescriptors()
    {
        throw new InvalidOperationException();
        ScriptControlDescriptor d = new ScriptControlDescriptor("Web.UI.Controls.FilterGroupingControl", this.ClientID);
        d.AddProperty("Groupings", this.Groupings.ToArray());


        return new ScriptDescriptor[] { d };
    }


    public IEnumerable<ScriptReference> GetScriptReferences()
    {
       // throw new InvalidOperationException();
        return new ScriptReference[0];
    }
}

最佳答案

如果您使用 IScriptControl,则必须将其添加到渲染进程中:

if (!this.DesignMode)
    {
        ScriptManager.GetCurrent(this.Page).RegisterScriptDescriptors(this);
    }

如此处所述:GetScriptReferences does not get called

RegisterScriptControl 将脚本通知脚本管理器,并调用 GetScriptReferences。您需要调用 RegisterScriptDescriptors 来处理组件注册,以及随后在客户端调用 $create 方法。

关于asp.net - 未在脚本控件上调用 GetScriptDescriptors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3058989/

相关文章:

asp.net - ASP.NET Web 部件是实现门户架构的可行技术吗

asp.net - 无法使用本地 IIS 在 Visual Studio 2017 上进行调试 - 未知错误 0x80004005

c# - 如何从sql日期中删除时间

c# - 使用 MVC 6 显示从 ASP.NET 5 中的 WebRequest 获取的 JSON 数据

javascript - 无法将html表数据绑定(bind)到mvc Controller 模型

c# - 如何在此 asp.NET web api 方法中检索 Ajax header ?

c# - 带有 firefox 3.6 的 ajax modalpopupextender 显示在页面底部

c# - 在 HttpClient 中将多个 token 添加到 DefaultRequestHeaders.Authorization

asp.net - 根据下拉列表中的选择删除网络表单的某些部分

c# - 在 ASP.NET 中“缓存”一个大表