今日 Lao Zhao の記事を読みましたが、デバッグできませんでした。
[AjaxPro.AjaxMethod]
パブリック文字列 gethtml()
{
UcViewHelper viewManager = new UcViewHelper();
UserControl コントロール = viewManager.LoadViewControl("~/uc/giftoutmodel.ascx");
文字列 s=viewManager.RenderView(control);
return s;
}
public class UcViewHelper ここで、 T : UserControl
{
プライベート マイページ m_pageHolder;
public T LoadViewControl(文字列パス)
{
m_pageHolder = 新しい MyPage();
return (T)m_pageHolder.LoadControl(path);
}
パブリック文字列 RenderView(T コントロール)
{
StringWriter 出力 = new StringWriter();
this.m_pageHolder.Controls.Add(コントロール);
HttpContext.Current.Server.Execute(this.m_pageHolder, 出力, false);
出力を返す.ToString();
}
}
クラス MyPage : ページ
{
public override void VerifyRenderingInServerForm(Control control)
{
//if (コントロールは GridView || コントロールは UserControl)
//{
// 戻り値;
//}
//base.VerifyRenderingInServerForm(control);
}
}
テストに合格しました。
場合:
[AjaxPro.AjaxMethod]
パブリック文字列 gethtml()
{
文字列 s = getString();
return s;
}
パブリック文字列 getString()
{
UserControl コントロール = LoadControl("~/uc/giftoutmodel.ascx") as UserControl;
StringWriter tw = new StringWriter();
HtmlTextWriter ライター = new HtmlTextWriter(tw);
control.RenderControl(ライター);
return Writer.InnerWriter.ToString();
}
public override void VerifyRenderingInServerForm(Control control)
{
// if (コントロールは GridView || コントロールは UserControl)
// {
// 戻り値;
//}
//base.VerifyRenderingInServerForm(control);
}
その理由は、Lao Zhao のコードが Page を継承し、VerifyRenderingInServerForm を使用して検証していることが判明したためです。次に、私のコードは Page を継承せず、直接 VerifyRenderingInServerForm を使用したため、
が発生します。