J'ai lu l'article de Lao Zhao aujourd'hui mais je ne pouvais pas le déboguer de toute façon.
La copie de code est la suivante:
[Ajaxpro.ajaxmethod]
String public gettml ()
{
UcViewHelper <UserControl> ViewManager = new ucViewHelper <UserControl> ();
UserControl Control = ViewManager.LoadViewControl ("~ / UC / GiftoutModel.ascx");
String S = ViewManager.RenderView (Control);
retour s;
}
classe publique ucviewhelper <t> où t: userControl
{
MyPage privé M_PageHolder;
public t loadViewControl (chemin de chaîne)
{
m_pageHolder = new myPage ();
return (t) m_pageholder.loadControl (chemin);
}
Public String RenderView (T Control)
{
StringWriter output = new StringWriter ();
this.m_pageholder.controls.add (contrôle);
HttpContext.current.server.exécute (this.m_pageholder, output, false);
return output.toString ();
}
}
Class MyPage: Page
{
Public Override void VerifyRenderingInServerForm (contrôle de contrôle)
{
// if (le contrôle est gridview || Le contrôle est userControl)
// {
// retour;
//}
//base.verifyRenderingInServerform(Control);
}
}
Le test a réussi.
si:
La copie de code est la suivante:
[Ajaxpro.ajaxmethod]
String public gettml ()
{
String s = getString ();
retour s;
}
public String getString ()
{
UserControl Control = LoadControl ("~ / UC / GiftoutModel.ascx") comme userControl;
StringWriter tw = new StringWriter ();
Htmltextwriter writer = new htmltextwriter (tw);
contrôle.RenderControl (écrivain);
return writer.innerwriter.toString ();
}
Public Override void VerifyRenderingInServerForm (contrôle de contrôle)
{
// if (le contrôle est gridview || Le contrôle est userControl)
// {
// retour;
//}
//base.verifyRenderingInServerform(Control);
}
La raison en est que le code de Lao Zhao a hérité de la page et a ensuite utilisé VerifyRenderingInServerForm pour vérifier. Deuxièmement, mon code n'a pas hérité de la page et utilisé directement VerifyRenderingInServerForm, donc il provoquera