当前位置:  开发笔记 > 编程语言 > 正文

如何使用GetClientScriptsInDocument从Source View智能标记设计器访问客户端脚本

如何解决《如何使用GetClientScriptsInDocument从SourceView智能标记设计器访问客户端脚本》经验,为你挑选了0个好方法。

我试图获取ASP页面的脚本节点块并通过代码实现动态修改它.为了做到这一点,我有一个自定义向导(组件设计器),我从设计视图源视图(ASP页面视图)打开.我已经在asp标记中定义了块.如果我从设计视图中打开设计器(带有智能标记),GetClientScriptsInDocument将返回现有节点,我可以修改它(例如添加一个javascript函数),尽管如果我从源视图中打开设计器,那么GetClientSciptsInDocument是返回null.

我的部分代码来自"Pro ASP.NET Extensibility"一书,我用它来获取设计器主机(通常是Visual Studio),并从那里获得RootDesigner(WebFormsRootDesigner类)和客户端脚本.

代码段:

internal ScriptNodeCollection GetScriptNodes()
{
    IDesignerHost host = this.designer.Component.Site.GetService(typeof(IDesignerHost)) as IDesignerHost;
    WebFormsRootDesigner root = host.GetDesigner(host.RootComponent) as WebFormsRootDesigner;

    if (root == null) return null;
    ClientScriptItemCollection scriptItems = root.GetClientScriptsInDocument();
    ....
}

(this)是DesignerHelper(自定义类)类型,它继承System.Windows.Forms.Design.ControlDesigner

这是某种.NET限制吗?使用自定义设计器时,只能使用设计视图访问脚本节点块,或者我遗漏了什么?

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有