js获取UserControl内容为拼html时提供方便

今天看了老赵的文章可是怎么都调试不通过。


[AjaxPro.AjaxMethod]

public string gethtml()

{



UcViewHelper<UserControl> viewManager = new UcViewHelper<UserControl>();

UserControl control = viewManager.LoadViewControl("~/uc/giftoutmodel.ascx");

string s=viewManager.RenderView(control);



return s;



}



public class UcViewHelper<T> where T : UserControl

{

private MyPage m_pageHolder;

public T LoadViewControl(string path)

{

m_pageHolder = new MyPage();

return (T)m_pageHolder.LoadControl(path);

}

public string RenderView(T control)

{

StringWriter output = new StringWriter();



this.m_pageHolder.Controls.Add(control);

HttpContext.Current.Server.Execute(this.m_pageHolder, output, false);



return output.ToString();

}

}



class MyPage : Page

{

public override void VerifyRenderingInServerForm(Control control)

{

//if (control is GridView || control is UserControl)

//{

// return;

//}

//base.VerifyRenderingInServerForm(control);

}

}



测试通过。

如果:


[AjaxPro.AjaxMethod]

public string gethtml()

{

string s = getString();

return 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();

}



public override void VerifyRenderingInServerForm(Control control)

{

// if (control is GridView || control is UserControl)

// {

// return;

//}

//base.VerifyRenderingInServerForm(control);

}



究其原因,原来是老赵的代码 继承了Page 然后使用VerifyRenderingInServerForm验证,二我的代码没有继承Page直接使用VerifyRenderingInServerForm 所以会造成