我想知道的是,如果有一种技术注入参数到渲染HttpContext
,这样它将可用于UserControl
当其页面生命周期事件(Page_Init,Page_Load )在渲染过程中被调用(在HttpContext.Current.Server.Execute()
期间)?参数注入动态创建UserControls没有专门化
这样的技术可以允许将数据注入到任何UserControl中(比如通过调用远程服务),而无需专门将其用于动态呈现。它的加载方式与ASPX页面上的静态控件相同。
开始使用该基座的代码片段:
Page page = new Page();
UserControl ctl = (UserControl)page.LoadControl(controlSpec);
page.Controls.Add(ctl);
// want to inject data into the control at this point
StringWriter writer = new StringWriter();
HttpContext.Current.Server.Execute(page, writer, true);
String renderedContent = writer.ToString();
return renderedContent;
我见过的@ScottGu ViewManager例子,其中他补充数据构件,每一个他UserControls
的并使用反射之前注入一个数据源到该构件该控件呈现为HTML。
我也看过Stefan Sedich's采取@ScottGu的例子,他从中衍生出一个通用的ViewManager<Control>
,它允许同样的事情,但避免了反思的需要。
例如,我希望能够在呈现UserControl
之前向HttpContext中的Request
对象或QueryString
添加参数。
你的建议是一个可行的解决方案,但它对我来说似乎不雅。另外,它需要专门的UserControl,我试图避免。 – 2009-06-11 02:19:10