Asp.net 从Usercontrol内部获取Html生成?
我开发了一个自定义用户控件。对于特定的需要,我必须从其中的usercontrol获取html生成,并仅在页面主体中显示它 我认为可能会重载RenderControl(HtmlTextWriter),但我不知道如何重载Asp.net 从Usercontrol内部获取Html生成?,asp.net,user-controls,lifecycle,Asp.net,User Controls,Lifecycle,我开发了一个自定义用户控件。对于特定的需要,我必须从其中的usercontrol获取html生成,并仅在页面主体中显示它 我认为可能会重载RenderControl(HtmlTextWriter),但我不知道如何重载 谢谢您可以在内存中呈现控件,将其保存在字符串中,然后按照您所说的在页面的某个位置打印此字符串。下面是加载控件并在内存中呈现它,然后在字符串中显示结果的代码 // load the control var oTesto = Page.LoadControl("Test
谢谢您可以在内存中呈现控件,将其保存在字符串中,然后按照您所说的在页面的某个位置打印此字符串。下面是加载控件并在内存中呈现它,然后在字符串中显示结果的代码
// load the control
var oTesto = Page.LoadControl("Testo.ascx");
// here you need to run some initialization of your control
// because the page_load is not loading now.
// a string writer to write on it
using(TextWriter stringWriter = new StringWriter())
{
// a html writer
using(HtmlTextWriter GrapseMesaMou = new HtmlTextWriter(stringWriter))
{
// now render the control inside the htm writer
oTesto.RenderControl(GrapseMesaMou);
// here is your control rendered output.
strBuild = stringWriter.ToString();
}
}
要捕获控件的呈现,您可以使用as:
您可以将渲染放在控件类中。多亏了您,但我想在usercontrol中执行此操作。我在网页上做不到。所以我想我必须在用户控件生命周期内完成它!这就是我要找的。但我有个问题。在这个控件中,我插入了另一个usercontrol程序,但它没有添加到TextWriter中。有什么解决方案吗?哇,这正是我使用ajax和一个小小的.net ashx处理程序加载部分页面所需要的!loadtemplate.ashx?tpl=edituser&lang=pt BR。@FredericMalenfant是的,如果你找到了如何使用它,这段小代码有很大的威力。。。
protected override void Render(HtmlTextWriter writer)
{
System.IO.StringWriter stringWriter = new System.IO.StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
// now the control is inside the htmlWriter as final rendered text
base.Render(htmlWriter);
// here is how to make the control render itself
// base.Render(writer);
}