I read Lao Zhao’s article today but I couldn’t debug it anyway.
The code copy is as follows:
[AjaxPro.AjaxMethod]
public string gettml()
{
UcViewHelper<UserControl> viewManager = new UcViewHelper<UserControl>();
UserControl control = viewManager.LoadViewControl("~/uc/giftoutmodel.ascx");
string s=viewManager.RenderView(control);
return s;
}
public class UcViewHelper<T> where T : UserControl
{
private MyPage m_pageHolder;
public T LoadViewControl(string path)
{
m_pageHolder = new MyPage();
return (T)m_pageHolder.LoadControl(path);
}
public string RenderView(T control)
{
StringWriter output = new StringWriter();
this.m_pageHolder.Controls.Add(control);
HttpContext.Current.Server.Execute(this.m_pageHolder, output, false);
return output.ToString();
}
}
class MyPage : Page
{
public override void VerifyRenderingInServerForm(Control control)
{
//if (control is GridView || control is UserControl)
//{
// return;
//}
//base.VerifyRenderingInServerForm(control);
}
}
The test passed.
if:
The code copy is as follows:
[AjaxPro.AjaxMethod]
public string gettml()
{
string s = getString();
return s;
}
public string getString()
{
UserControl control = LoadControl("~/uc/giftoutmodel.ascx") as UserControl;
StringWriter tw = new StringWriter();
HtmlTextWriter writer = new HtmlTextWriter(tw);
control.RenderControl(writer);
return writer.InnerWriter.ToString();
}
public override void VerifyRenderingInServerForm(Control control)
{
// if (control is GridView || control is UserControl)
// {
// return;
//}
//base.VerifyRenderingInServerForm(control);
}
The reason is that Lao Zhao's code inherited the Page and then used VerifyRenderingInServerForm to verify. Second, my code did not inherit Page and directly used VerifyRenderingInServerForm, so it will cause