使用Jquery Ajax调用加载用户控件

时间:2011-01-26 21:49:19

标签: .net ajax

我正在尝试使用JQuery在页面上插入用户控件

我的网页看起来像这样

<asp:Content ID="Body" ContentPlaceHolderID="body" runat="server">    
    <div id="Container">

    </div>

    <script type="text/javascript" language="javascript">

       function LoadUserControl(tabName) {
           $.ajax({
               type: "POST",
               url: ("TestHK.aspx?Show=" + tabName),
               success: function (html) {
                   document.getElementById('Container').innerHTML = html;                  
               },
               error: function (msg) {
                   alert('error' + msg);
               }
           });
        }

</asp:Content>

关于我背后的代码

 protected void Page_Load(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(Request.QueryString["Show"]))
            {
                GetControlHtml("~/userControls/TreeViewAreas.ascx");              
            }
        }

    public void GetControlHtml(string controlLocation)
    {
        var page = new Page();
        var userControl = (TreeViewAreas)page.LoadControl(controlLocation);
        userControl.ButtonIsVisible = true;
        userControl.HousekeeperId = 7190;
        userControl.AreasCovered  = new HousekeeperBusiness().GetAreas(7190);            
        page.Controls.Add(userControl);
        using (var textWriter = new StringWriter())
        {
            HttpContext.Current.Server.Execute(page, textWriter, false);
            Response.Write(textWriter.ToString());
            Response.End();    
        }                       
    }

但我总是得到

执行处理程序'System.Web.UI.Page'的子请求时出错。

我做错了什么?

由于

2 个答案:

答案 0 :(得分:1)

我相信你不会使用简单的AJAX机制添加UserControl。

这是使用UpdatePanel的一个很好的例子,因为你将添加新的控件,页面将显示它们。

注意我不认为UpdatePanel是一个不错的选择,但我相信它符合您的要求。

答案 1 :(得分:1)