2011-10-10 55 views
1

我生成使用ASP .NET用戶控件的HTML電子郵件,內容如下如何在ASP .NET運行時之外呈現ASP .NET用戶控件?

private string GetHtml(object myData) 
{ 
    var page = new Page(); 
    var control = page.LoadControl("~/path/to/myEmailControl.ascx"); 
    page.Controls.Add(control); 
    control.DataBind(myData); 
    return RenderControlToHtml(control); 
} 

private string RenderControlToHtml(Control control) 
{ 
    var builder = new StringBuilder(); 
    control.RenderControl(new HtmlTextWriter(new StringWriter(builder))); 
    return builder.ToString(); 
} 

當我使用它從一個web項目也能正常工作,但最近我們增加了一個Windows應用程序的解決方案還需要使用此代碼。

有沒有人有任何關於如何讓代碼在ASP .NET運行時之外工作的建議?一旦我得到一個控件的實例,我應該能夠渲染它,但是它是從ascx文件加載控件的問題。

+0

行page.LoadControl(「〜/ path/to/myEmailControl.ascx」)將不起作用,因爲沒有web路徑。如果你用新的EmailControl交換它會怎麼樣?並重寫以控制自定義控件。 – Peter

回答

0

您應該將控件從usercontrol更改爲customcontrol。比你可以使用控件上的渲染方法。