js获取UserControl内容为拼html时提供方便
作者:bea
今天看了老赵的文章可是怎么都调试不通过。 代码如下: [AjaxPro.AjaxMethod] public string gethtml() { UcViewHelper<UserControl> viewManager = new UcViewHelper<UserControl>(); UserControl control = viewManager.LoadViewControl("~/uc/giftoutmodel.asc
今天看了老赵的文章可是怎么都调试不通过。
代码如下:
[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 所以会造成
有用 | 无用
代码如下:
[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 所以会造成
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
- node.js中Socket.IO的进阶使用技巧
- node.js中的Socket.IO使用实例
- Node.js的特点和应用场景介绍
- Node.js中的模块机制学习笔记
- Node.js异步I/O学习笔记
- JavaScript中的ubound函数使用实例
- JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
- 网页中表单按回车就自动提交的问题的解决方案
- 详解jquery中$.ajax方法提交表单
- jquery处理json对象
- js格式化时间小结
- 解决js下referer兼容各大浏览器的方法
- jQuery修改li下的样式以及li下的img的src的值的方法
- jQuery中ajax和post处理json的不同示例对比
- 一款基jquery超炫的动画导航菜单可响应单击事件
- 加载列表时jquery获取ul中第一个li的属性
- 基于jquery固定于顶部的导航响应浏览器滚动条事件
- jQuery ajax serialize() 方法使用示例