오늘 Lao Zhao의 기사를 읽었지만 디버깅할 수 없었습니다.
[AjaxPro.AjaxMethod]
공개 문자열 gethtml()
{
UcViewHelper viewManager = new UcViewHelper();
UserControl 컨트롤 = viewManager.LoadViewControl("~/uc/giftoutmodel.ascx");
문자열 s=viewManager.RenderView(control);
반품하세요;
}
공개 클래스 UcViewHelper 여기서 T : UserControl
{
개인 마이페이지 m_pageHolder;
공개 T LoadViewControl(문자열 경로)
{
m_pageHolder = 새로운 MyPage();
return (T)m_pageHolder.LoadControl(path);
}
공개 문자열 RenderView(T 컨트롤)
{
StringWriter 출력 = new StringWriter();
this.m_pageHolder.Controls.Add(control);
HttpContext.Current.Server.Execute(this.m_pageHolder, 출력, false);
return 출력.ToString();
}
}
class 마이페이지 : 페이지
{
공개 재정의 무효 검증RenderingInServerForm(제어 제어)
{
//if (컨트롤이 GridView || 컨트롤이 UserControl임)
//{
// 반환;
//}
//base.VerifyRenderingInServerForm(control);
}
}
테스트를 통과했습니다.
만약:
[AjaxPro.AjaxMethod]
공개 문자열 gethtml()
{
문자열 s = getString();
반품하세요;
}
공개 문자열 getString()
{
UserControl 컨트롤 = LoadControl("~/uc/giftoutmodel.ascx") as UserControl;
StringWriter tw = 새로운 StringWriter();
HtmlTextWriter 작가 = 새로운 HtmlTextWriter(tw);
control.RenderControl(작가);
returnwriter.InnerWriter.ToString();
}
공개 재정의 무효 검증RenderingInServerForm(제어 제어)
{
// if (컨트롤은 GridView || 컨트롤은 UserControl)
// {
// 반환;
//}
//base.VerifyRenderingInServerForm(control);
}
이유는 Lao Zhao의 코드가 Page를 상속한 후 VerifyRenderingInServerForm을 사용하여 검증한 것으로 밝혀졌습니다. 둘째, 제 코드는 Page를 상속받지 않고 VerifyRenderingInServerForm을 직접 사용했기 때문에