在一个HTML文本编程作家加载用户控制 [英] load a user control programmatically in to a html text writer
问题描述
我想呈现一个用户控件为一个字符串。该应用程序设置,使用户能够使用令牌和用户控件呈现这个标记是找到。
I am trying to render a user control into a string. The application is set up to enable user to use tokens and user controls are rendered where the tokens are found.
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter writer = new HtmlTextWriter(sw);
Control uc = LoadControl("~/includes/HomepageNews.ascx");
uc.RenderControl(writer);
return sb.ToString();
这code呈现的控制,但没有所谓的控制的Page_Load事件被触发。有一个在控制需求火灾中继器。
推荐答案
我一直使用由Scott Guthrie的在他的博客很长一段时间提供了以下code:
I've been using the following code provided by Scott Guthrie in his blog for quite some time:
public class ViewManager
{
public static string RenderView(string path, object data)
{
Page pageHolder = new Page();
UserControl viewControl = (UserControl) pageHolder.LoadControl(path);
if (data != null)
{
Type viewControlType = viewControl.GetType();
FieldInfo field = viewControlType.GetField("Data");
if (field != null)
{
field.SetValue(viewControl, data);
}
else
{
throw new Exception("ViewFile: " + path + "has no data property");
}
}
pageHolder.Controls.Add(viewControl);
StringWriter result = new StringWriter();
HttpContext.Current.Server.Execute(pageHolder, result, false);
return result.ToString();
}
}
的对象数据
参数,实现数据的动态加载到用户的控制,并且可以通过一个数组或者别的什么类似的用于注入多个变量到控制
The object data
parameter, enables dynamic loading of data into the user control, and can be used to inject more than one variable into the control via an array or somethin similar.
这code将火在控制一切正常事件。
This code will fire all the normal events in the control.
<一个href=\"http://weblogs.asp.net/scottgu/archive/2006/10/22/Tip_2F00_Trick_3A00_-Cool-UI-Templating-Technique-to-use-with-ASP.NET-AJAX-for-non_2D00_UpdatePanel-scenarios.aspx\">You可以阅读更多关于它这里
问候
加斯帕豪格
Regards Jesper Hauge
这篇关于在一个HTML文本编程作家加载用户控制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!