今日はLao Zhaoの記事を読みましたが、とにかくデバッグできませんでした。
コードコピーは次のとおりです。
[ajaxpro.ajaxmethod]
public string gettml()
{
ucviewhelper <uesercontrol> viewmanager = new ucviewhelper <uesercontrol>();
usercontrol control = viewmanager.loadviewcontrol( "〜/uc/giftOutmodel.ascx");
文字列S = ViewManager.RenderView(Control);
s;
}
パブリッククラスucviewhelper <t>ここで、t:usercontrol
{
プライベートMyPage M_PageHolder;
public t loadViewControl(String Path)
{
M_PageHolder = new MyPage();
return(t)m_pageholder.loadcontrol(path);
}
パブリックストリングrenderview(tコントロール)
{
stringwriter output = new StringWriter();
this.m_pageholder.controls.add(control);
httpcontext.current.server.execute(this.m_pageholder、output、false);
return output.toString();
}
}
クラスmypage:ページ
{
パブリックオーバーライドvoid verifyRenderinginserverform(コントロールコントロール)
{
// if(コントロールはgridviewです||コントロールはusercontrolです)
// {
// 戻る;
//}
//base.verifyRenderingInserverform(control);
}
}
テストが合格しました。
もし:
コードコピーは次のとおりです。
[ajaxpro.ajaxmethod]
public string gettml()
{
文字列s = getString();
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();
}
パブリックオーバーライドvoid verifyRenderinginserverform(コントロールコントロール)
{
// if(コントロールはgridviewです||コントロールはusercontrolです)
// {
// 戻る;
//}
//base.verifyRenderingInserverform(control);
}
その理由は、Lao Zhaoのコードがページを継承し、VerifyRenderingInserverformを使用して検証したためです。第二に、私のコードはページを継承せず、verifyRenderingInserverformを直接使用したため、原因となります