c# - 获取用户控制 HTML

标签 c# asp.net user-controls loadcontrol rendercontrol

我需要获取用户控件的 HTML。

目前我正在使用以下代码。

// Approach 1
HeaderControl hControl = new HeaderControl();

StringBuilder b = new StringBuilder();
HtmlTextWriter h = new HtmlTextWriter(new StringWriter(b));

hControl.RenderControl(h);
string controlAsString = b.ToString();

// controlAsString  is "" -- Doesn't work

// ----------------------------------------------
// Approach 2
UserControl uc = new UserControl();
HeaderControl hc = (HeaderControl)uc.LoadControl("~/Views/HeaderControl.ascx");

hControl.RenderControl(h);
string controlAsString = b.ToString();

// controlAsString = "<h3>test data</h3>  - Works.

能否请您解释一下我如何使用方法 1 实现此目的,这样我就不必对控件的虚拟路径进行硬编码。

我还尝试了 uc.LoadControl() 的其他重载

UserControl uc = new UserControl();
HeaderControl hControl = (HeaderControl)uc.LoadControl(typeof(HeaderControl), null);

// Header control has a default constructor that takes no parameters

// but no luck :(

最佳答案

b应该是一个 System.IO.StringWriter。方法 1 中的代码应如下所示:

var hControl = new HeaderControl();
var strWriter = new System.IO.StringWriter();
var htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
hControl.Rendercontrol(htmlWriter);
string ControlAsString = strWriter.ToString();

这是从我在 SO 中的另一个答案的帮助下编写的一段代码复制而来的,非常适合我。

关于c# - 获取用户控制 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19230396/

相关文章:

mvvm - 使用 MVVM 单击按钮时折叠/可见用户控件 - 无交换机制 -

javascript - 让脚本模拟控件、按键序列?

java - 我有 spring mvc 和瓷砖。现在我需要用户控制

c# - 用最小起订量测试这个的正确方法

C# - 如何在 Dotfuscator.Net 中使用匿名类型?

asp.net - 保存 web.config 错误 访问被拒绝

c# - Microsoft.AspNet.Identity.Core 和 Microsoft.AspNetCore.Identity 之间有什么区别?

javascript - 如何使用POST方法来实现呢?

C# Keys.Apps 将始终打开 Windows 上下文菜单

c# - C# 应用程序中串行数据未传输