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

js获取UserControl内容,避免拼html的麻烦

2012-02-03 17:33 627 查看
 今天看了老赵的文章可是怎么都调试不通过。

        [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 所以会造成

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息