將渲染 UserControl 邏輯封裝為 AscxUtility 靜態類別,支援泛型與多載,可在 Action 與 Razor 視圖中直接呼叫。
public static HtmlString RenderControl<T>(string path) where T : UserControl {
var page = new Page();
var control = (T)page.LoadControl(path);
page.Controls.Add(control);
var writer = new StringWriter();
var htmlWriter = new HtmlTextWriter(writer);
page.RenderControl(htmlWriter);
return new HtmlString(writer.ToString());
}
public ActionResult UcTest() {
return Content(AscxUtility.RenderControl<WebUserControl1>("~/AspNets/WebUserControl1.ascx").ToString());
}
進一步支援視圖直接呼叫:@AscxUtility.RenderControl<WebUserControl1>("~/AspNets/WebUserControl1.ascx"),實現邏輯複用與關注點分離。