我正在尝试创建一个可以作为电子邮件发送的用户控件模板.
在实用程序类中,我有一个包含此代码的方法:
StringBuilder sb = new StringBuilder();
Page p = new Page();
UserControl ctrl = (UserControl)p.LoadControl("~/EmailTemplates/OrderConfirmation.ascx");
StringWriter sw = new StringWriter(sb);
Html32TextWriter htw = new Html32TextWriter(sw);
ctrl.RenderControl(htw);
Run Code Online (Sandbox Code Playgroud)
这正确地写入了用户控件文本,但是如果我想在控件页面内使用服务器控件(例如listview),则永远不会评估列表视图.似乎只评估内联代码块.我怎么能绕过这个?
您应该将控件添加到页面并执行页面:
var page = new FormlessPage();
var ctrl = (UserControl)page.LoadControl("~/EmailTemplates/OrderConfirmation.ascx");
page.Controls.Add(ctl);
StringWriter writer = new StringWriter();
HttpContext.Current.Server.Execute(page, writer, false);
return writer.ToString();
Run Code Online (Sandbox Code Playgroud)
无形页面看起来像:
public class FormlessPage : Page
{
public override void VerifyRenderingInServerForm(Control control)
{
}
}
Run Code Online (Sandbox Code Playgroud)
它允许您的控件具有没有<form>包装器的输入元素.
此方法将调用页面生命周期方法并很好地绑定表单元素.
| 归档时间: |
|
| 查看次数: |
1369 次 |
| 最近记录: |