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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章