오늘 Lao Zhao의 기사를 읽었지만 어쨌든 디버깅 할 수 없었습니다.
코드 사본은 다음과 같습니다.
[ajaxpro.ajaxmethod]
공개 문자열 gettml ()
{
ucviewhelper <OUSCONTROL> viewManager = new UCViewHelper <UserControl> ();
USERCONTROL CONTROL = ViewManager.loadViewControl ( "~/uc/wistoutmodel.ascx");
문자열 s = viewmanager.renderview (컨트롤);
반환 s;
}
공개 클래스 ucviewhelper <t> 여기서 t : usercontrol
{
개인 mypage m_pageholder;
public t loadViewControl (문자열 경로)
{
m_pageholder = new MyPage ();
return (t) m_pageholder.loadcontrol (Path);
}
공개 문자열 renderview (t control)
{
StringWriter output = new StringWriter ();
this.m_pageholder.controls.add (컨트롤);
httpcontext.current.server.execute (this.m_pageholder, output, false);
return output.toString ();
}
}
클래스 MyPage : 페이지
{
공개 재정의 void verifyRenderingInserVerform (제어 제어)
{
// if (Control is GridView || Control IS USERCONTROL)
// {
// 반품;
//}
//base.VerifyRenderingInserVerform(Control);
}
}
테스트가 통과되었습니다.
만약에:
코드 사본은 다음과 같습니다.
[ajaxpro.ajaxmethod]
공개 문자열 gettml ()
{
문자열 s = getString ();
반환 s;
}
public String getString ()
{
UserControl Control = loadControl ( "~/uc/giestoutmodel.ascx"));
StringWriter tw = new StringWriter ();
htmltextwriter Writer = 새로운 htmltextwriter (Tw);
Control.RenderControl (Writer);
return writer.innerwriter.toString ();
}
공개 재정의 void verifyRenderingInserVerform (제어 제어)
{
// if (Control is GridView || Control IS USERCONTROL)
// {
// 반품;
//}
//base.VerifyRenderingInserVerform(Control);
}
그 이유는 Lao Zhao의 코드가 페이지를 상속 한 다음 VerifyRenderingInserVerform을 사용하여 확인하기 때문입니다. 둘째, 내 코드는 페이지를 상속하지 않았고 verifyRenderingInserVerform을 직접 사용하므로