Eu li o artigo de Lao Zhao hoje, mas não consegui depurar de qualquer maneira.
A cópia do código é a seguinte:
[Ajaxpro.ajaxmethod]
public string gettml ()
{
UcViewHelper <UserControl> viewManager = new UcViewHelper <UserControl> ();
UserControl Control = ViewManager.LoadViewControl ("~/UC/GRESTMODEL.ASCX");
String S = ViewManager.RenderView (Control);
retorno s;
}
Classe pública UCViewHelper <T> Onde T: UserControl
{
private mypage m_pageholder;
public t loadviewControl (caminho da sequência)
{
m_pageholder = new MyPage ();
return (t) m_pageholder.loadcontrol (caminho);
}
public String RenderView (controle t)
{
StringWriter Output = new StringWriter ();
this.m_pageholder.controls.add (controle);
Httpcontext.current.server.execute (this.m_pageholder, saída, false);
return Output.ToString ();
}
}
Classe MyPage: Página
{
Substituição pública Void VerifyRernderingInserverform (controle de controle)
{
// if (controle é gridview || controle é userControl)
// {
// retornar;
//}
//base.VerifyRernderingInserverForm(control);
}
}
O teste passou.
se:
A cópia do código é a seguinte:
[Ajaxpro.ajaxmethod]
public string gettml ()
{
string s = getString ();
retorno s;
}
public string 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 ();
}
Substituição pública Void VerifyRernderingInserverform (controle de controle)
{
// if (controle é gridview || controle é userControl)
// {
// retornar;
//}
//base.VerifyRernderingInserverForm(control);
}
O motivo é que o código do Lao Zhao herdou a página e, em seguida, foi usado o verificadorRernderingInserverform para verificar. Segundo, meu código não herdou a página e usou diretamente o verifyrenderingInserverform, por isso causará