วิธีการสร้าง HTML ของมุมมองบางส่วนให้กับเครื่องยนต์มุมมอง ASP.NET เป็นที่รู้จักกัน
แต่หากใช้ฟังก์ชันนี้ในมุมมองบางส่วนของมีดโกนจะไม่ทำงานเนื่องจากข้อยกเว้นกล่าวว่ามุมมองบางส่วนไม่ได้มาจาก "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();
}