J'ai lu l'article de Lao Zhao aujourd'hui mais je n'ai pas pu le déboguer.
[AjaxPro.AjaxMethod]
chaîne publique gethtml()
{
UcViewHelper viewManager = new UcViewHelper();
Contrôle UserControl = viewManager.LoadViewControl("~/uc/giftoutmodel.ascx");
string s=viewManager.RenderView(control);
retourner s;
>
classe publique UcViewHelper où T : UserControl
{
MaPage privée m_pageHolder ;
public T LoadViewControl (chemin de chaîne)
{
m_pageHolder = new MaPage();
return (T)m_pageHolder.LoadControl(path);
>
chaîne publique RenderView (contrôle T)
{
Sortie StringWriter = new StringWriter();
this.m_pageHolder.Controls.Add(control);
HttpContext.Current.Server.Execute(this.m_pageHolder, sortie, false);
retourner la sortie.ToString();
>
>
classe MaPage : Page
{
public override void VerifyRenderingInServerForm(Control control)
{
//if (le contrôle est GridView || le contrôle est UserControl)
//{
// retour ;
//}
//base.VerifyRenderingInServerForm(control);
>
>
Test réussi.
Si :
[AjaxPro.AjaxMethod]
chaîne publique gethtml()
{
chaîne s = getString();
retourner s;
>
chaîne publique getString()
{
Contrôle UserControl = LoadControl("~/uc/giftoutmodel.ascx") as UserControl;
StringWriter tw = new StringWriter();
HtmlTextWriter écrivain = new HtmlTextWriter(tw);
control.RenderControl(écrivain);
returnwriter.InnerWriter.ToString();
>
public override void VerifyRenderingInServerForm(Control control)
{
// si (le contrôle est GridView || le contrôle est UserControl)
// {
// retour ;
//}
//base.VerifyRenderingInServerForm(control);
>
La raison est qu'il s'avère que le code de Lao Zhao a hérité de Page et a ensuite utilisé VerifyRenderingInServerForm pour vérifier. Deuxièmement, mon code n'a pas hérité de Page et a directement utilisé VerifyRenderingInServerForm, donc cela provoquerait
.