您的位置:首页 > Web前端 > JavaScript

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

2014-11-02 00:00 561 查看
今天看了老赵的文章可是怎么都调试不通过。

[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 所以会造成
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: