以编程方式呈现 Web UserControl

2023-11-24

我有一大堆UserControl对象(ascx文件)在他们自己的小项目中。然后,我在两个项目中引用该项目:REST API(这是一个类库项目)和主网站。

我确信这在网站上很容易,只需使用Controls.Add in any Panel或 ASP.NET 控件都可以。

但是,API 又如何呢?有什么方法可以通过了解控件的类型来呈现该控件的 HTML?这渲染控制方法不会向编写器写入任何 HTML,因为控件的生命周期甚至还没有开始。

请记住,我在 Web 项目中没有控件,因此我没有指向该项目的虚拟路径ascx文件。所以负载控制方法在这里不起作用。

所有控件实际上都派生自同一个基本控件。在这个基类中我可以做些什么来允许我从一个全新的实例加载控件吗?


这是我最近所做的,效果很好,但是如果您在 ASP.NET 应用程序中使用它,则了解回发将不起作用。

 [WebMethod]
 public static string GetMyUserControlHtml()
 {
     return  RenderUserControl("Com.YourNameSpace.UI", "YourControlName");
 }

 public static string RenderUserControl(string assembly,
             string controlName)
 {
        FormlessPage pageHolder = 
                new FormlessPage() { AppRelativeTemplateSourceDirectory = HttpRuntime.AppDomainAppVirtualPath }; //allow for "~/" paths to resolve

        dynamic control = null;

        //assembly = "Com.YourNameSpace.UI"; //example
        //controlName = "YourCustomControl"
        string fullyQaulifiedAssemblyPath = string.Format("{0}.{1},{0}", assembly, controlName);

        Type type = Type.GetType(fullyQaulifiedAssemblyPath);
        if (type != null)
        {
            control = pageHolder.LoadControl(type, null);
            control.Bla1 = "test"; //bypass compile time checks on property setters if needed
            control.Blas2 = true;

        }                          

        pageHolder.Controls.Add(control);
        StringWriter output = new StringWriter();
        HttpContext.Current.Server.Execute(pageHolder, output, false);
        return output.ToString();
 }


public class FormlessPage : Page
{
    public override void VerifyRenderingInServerForm(Control control)
    {
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式呈现 Web UserControl 的相关文章

  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • ClickOnce 应用程序错误:部署和应用程序没有匹配的安全区域

    我在 IE 中使用 FireFox 和 Chrome 的 ClickOnce 应用程序时遇到问题 它工作正常 异常的详细信息是 PLATFORM VERSION INFO Windows 6 1 7600 0 Win32NT Common
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 如何在 32 位或 64 位配置中以编程方式运行任何 CPU .NET 可执行文件?

    我有一个可在 32 位和 64 位处理器上运行的 C 应用程序 我试图枚举给定系统上所有进程的模块 当尝试从 64 位应用程序枚举 32 位进程模块时 这会出现问题 Windows 或 NET 禁止它 我认为如果我可以从应用程序内部重新启动
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 使用管道时,如果子进程数量大于处理器数量,进程是否会被阻塞?

    当子进程数量很大时 我的程序停止运行 我不知道问题是什么 但我猜子进程在运行时以某种方式被阻止 下面是该程序的主要工作流程 void function int process num int i initial variables for
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • System.IO.FileNotFoundException:找不到网络路径。在 Windows 7 上使用 DirectoryEntry 对象时出现异常

    我正在尝试使用 DirectoryEntry 对象连接到远程 Windows 7 计算机 这是我的代码 DirectoryEntry obDirEntry new DirectoryEntry WinNT hostName hostName
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock

随机推荐

  • 从 HTMLDocument 获取所有 html 作为字符串

    我用 Java 编码 有谁知道我如何获取 javax swing text html HTMLDocument 的内容作为字符串 这就是我到目前为止所得到的 URL url new URL http www test com HTMLEdi
  • MySQL 用户定义函数

    我有一个表包含几列 column 1 column 2 和column 3 我将一个新列添加到名为 分数 的表中 我想做的是根据这三列计算分数并轻松调整参数 假设我的分数公式如下所示 score a column 1 b column 2
  • 动态更改 gridview 横轴计数以填充 flutter 中的动态列

    我正在使用 flutter 框架开发 gridview 以实现动态列计数 但没有得到解决方案 我尝试过将 GridView count 和 Gridview builder 与 itembuilder 一起使用 但没有得到预期的结果 任何帮
  • PHP:如何将时间字符串与日期('H:i')进行比较?

    我将时间保存在数据库中 例如晚上 7 30 作为 varchar 字段 我想检查这个时间是否大于现在的时间 我将数据库时间字符串转换为 19 30 现在我想做这样的事情 my time 19 30 if my time gt date H
  • 是否可以在 Chart.js 中生成圆形雷达图?

    当我绘制标准 Chart js 雷达图时 轴是多边形 不是圆形 例如 是否可以将轴做成圆形 像这样 编辑 2021 10 27 Chart js v3已删除scale有利于的选择options scales r 这是使雷达网格呈圆形的更新方
  • 多线程 ViewController 中的 UIWebView

    我在视图控制器中有一个 UIWebView 它有以下两种方法 问题是 如果我在第二个线程完成之前弹出 重新点击导航栏 此控制器 应用程序将在 super dealloc 之后崩溃 因为 尝试从主线程以外的线程获取 Web 锁或Web 线程
  • 调用init方法失败;嵌套异常是 java.lang.IllegalArgumentException:方法公共抽象的查询验证失败

    我正在开发Spring MVC Spring data jpa querydsl我是新手 当我为 querydsl 编写代码时 在该代码工作正常之前 当我添加 querydsl 相关代码时 我开始收到以下错误 不确定出了什么问题 请指导 错
  • 如何为同一个函数设置不同的输入类型?

    我想做的基本想法是 def aFuncion string dicti if len str gt 0 print you gave string as input if len dicti gt 0 print you gave a di
  • 从我的应用程序登录 Facebook 可以在模拟器上运行,但不能在设备上运行

    这是我登录 Facebook 的代码 mLoginButton LoginButton findViewById R id login restore session if one exists SessionStore restore U
  • Firefox 无法正确显示 :before 和 :after 伪元素

    在除 Firefox 之外的所有其他浏览器上 网页看起来都很好 甚至是 Internet Explorer 伪元素漂浮在整个文档中 甚至在第一个元素显示后不显示 这种行为有什么解决办法吗 CSS span property dc date
  • 如何使用 php 编辑/更新 txt 文件

    在我阅读了文件上的编辑 更新功能的很多类似问题并且没有一个起作用之后 我想寻求一些帮助 我正在尝试编辑 txt来自 php ini 的文档我已经尝试过这些事情 这是我在这里阅读的最后一个代码 但它不起作用 data to write POS
  • ARM 汇编器 - 如何使用 CMP、BLT 和 BGT?

    问你们一个简单的问题 在我的循环中 我需要使用 CMP BLT 和 BGT 来比较一些值 如何在下面的循环中使用所述指令 我正在尝试使用 BGT BLT 和 CMP 因为我需要它们来使我的应用程序正常工作 问题是我不知道如何使用它们 如果我
  • 我可以传递 --max-concurrent-downloads 作为标志吗?

    我正在使用较差的互联网连接并尝试拉取并运行图像 我想一次下载一层 每个文档尝试添加一个平面 max concurrent downloads 如下所示 docker run rm p 8787 8787 e PASSWORD blah ma
  • SQLAlchemy 在 select 语句上占用内存

    根据 SQLAlchemy select 语句被视为 for 循环中的可迭代对象 其效果是 返回大量行的 select 语句不会使用过多的内存 我发现 MySQL 表上有以下语句 for row in my connections exec
  • 用于设置 pagefile.sys 大小的 PowerShell 脚本

    如何通过PowerShell设置Windows上页面文件 pagefile sys 的大小 这是我们通过 PowerShell 更新 pagefile sys 大小的方法 PowerShell Script to set the size
  • 比较没有时间成分的 NSDate

    在一个快速的操场上 我一直在使用 NSDate date 但是 它总是附加时间元素出现 对于我的应用程序 我需要忽略时间元素 这在斯威夫特中可能吗 如何做呢 即使我可以将时间元素设置为每个日期的同一时间也可以 另外 我正在尝试比较两个日期
  • 如何在 android Os 4.0 中构建默认浏览器应用程序

    我从以下位置下载了android默认浏览器应用程序的源代码here 并尝试从日食中构建它 它显示不同类中的各种构建错误 主要错误是由于导入造成的 因为它无法选择以下类 import android provider BrowserContr
  • 在 Xcode 6 Beta 4 中放松 Segue

    我一直在尝试向 Xcode 6 中的 swift 应用程序添加展开转场 并且在前三个测试版的发行说明中 它被声明为不受支持 然而 在 Beta 4 中 该错误说明不再存在 我听说人们能够让它发挥作用 但我却没有这样的运气 所以 我的问题是
  • 以编程方式添加自定义设置选项卡以管理 WooCommerce 中的产品数据

    我想以编程方式将设置选项卡添加到产品数据元框 如下所示 Verzendkosten 选项卡是通过 firebug 添加的 这意味着 运费 如何以编程方式在 woocommerce 编辑产品页面设置中添加 Verzendkosten 自定义选
  • 以编程方式呈现 Web UserControl

    我有一大堆UserControl对象 ascx文件 在他们自己的小项目中 然后 我在两个项目中引用该项目 REST API 这是一个类库项目 和主网站 我确信这在网站上很容易 只需使用Controls Add in any Panel或 A