Leí el artículo de Lao Zhao hoy, pero no pude depurarlo de todos modos.
La copia del código es la siguiente:
[AjaxPro.AJAXMETHOD]
cadena pública gettml ()
{
UCViewHelper <Serercontrol> ViewManager = new UCViewHelper <SerControl> ();
UserControl Control = ViewManager.LoadViewControl ("~/UC/GiftOutModel.ascx");
cadena S = ViewManager.renderview (control);
regreso s;
}
clase pública ucviewhelper <t> donde t: UserControl
{
MyPage privado m_pageholder;
Public t loadViewControl (ruta de cadena)
{
m_pageholder = new MyPage ();
return (t) m_pageholder.loadControl (ruta);
}
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 ();
}
}
Clase MyPage: página
{
Anulación pública nula VerifyRenderingInserverForm (control de control)
{
// if (el control es GridView || El control es UserControl)
// {
// devolver;
//}
//base.verifyRenderingInserverForm(Control);
}
}
La prueba pasó.
si:
La copia del código es la siguiente:
[AjaxPro.AJAXMETHOD]
cadena pública gettml ()
{
cadena s = getString ();
regreso s;
}
Cadena pública getTring ()
{
UserControl Control = LoadControl ("~/UC/GiftOutModel.ascx") como UserControl;
StringWriter tw = new StringWriter ();
HtmlTextWriter Writer = new htmlTextWriter (tw);
control.renderControl (escritor);
return writer.innerwriter.ToString ();
}
Anulación pública nula VerifyRenderingInserverForm (control de control)
{
// if (el control es GridView || El control es UserControl)
// {
// devolver;
//}
//base.verifyRenderingInserverForm(Control);
}
La razón es que el código de Lao Zhao heredó la página y luego usó VerifyRenderingInserverForm para verificar. En segundo lugar, mi código no heredó la página y usó directamente VerifyRenderingInserverForm, por lo que causará