ASP.NETビューエンジンで特定の部分ビューのHTMLを生成する方法は既知です。
ただし、この機能がかみそり部分ビューで使用されている場合、例外は部分ビューが「UserControl」から派生しないことを示しているため、機能しません。
かみそり部分ビューをサポートするようにレンダリングを修正するにはどうすればよいですか?
この部分的なビューから電子メールを生成するため、これが必要です...
更新:
失敗するコード(@mcl):
public string RenderPartialToString(string controlName, object viewData)
{
ViewPage viewPage = new ViewPage() { ViewContext = new ViewContext() };
viewPage.Url = this.GetUrlHelper();
string fullControlName = "~/Views/Email/" + controlName + ".ascx";
viewPage.ViewData = new ViewDataDictionary(viewData);
viewPage.Controls.Add(viewPage.LoadControl(fullControlName));
StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
using (HtmlTextWriter tw = new HtmlTextWriter(sw))
{
viewPage.RenderControl(tw);
}
}
return sb.ToString();
}