Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;执行处理程序的子请求时出错';System.Web.UI.Page'&引用;使用JQuery添加用户控件时_C#_Javascript_Jquery_Asp.net_User Controls - Fatal编程技术网

C# &引用;执行处理程序的子请求时出错';System.Web.UI.Page'&引用;使用JQuery添加用户控件时

C# &引用;执行处理程序的子请求时出错';System.Web.UI.Page'&引用;使用JQuery添加用户控件时,c#,javascript,jquery,asp.net,user-controls,C#,Javascript,Jquery,Asp.net,User Controls,我正在使用JQuery动态加载ASP.NET用户控件: function OnSuccess(response) { var xmlDoc = $.parseXML(response.d); var xml = $(xmlDoc); pageCount = parseInt(xml.find("PageCount").eq(0).find("PageCount").text()); var topics = xml.find("Topics"); topi

我正在使用JQuery动态加载ASP.NET用户控件:

function OnSuccess(response) {
    var xmlDoc = $.parseXML(response.d);
    var xml = $(xmlDoc);
    pageCount = parseInt(xml.find("PageCount").eq(0).find("PageCount").text());
    var topics = xml.find("Topics");
    topics.each(function () {
        var table = $("#dvTopics table").eq(0).clone(true);

        var customer = $(this);
        $.ajax({
            type: "POST",
            url: "TopicList.aspx/LoadUserControl",
            data: "{message: '" + topics.find("desid").text() + ",'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (r) {
                table.append(r.d);
            }
        });
        $("#dvTopics").append(table).append("<br />");

    });

    $("#loader").hide();
}

但是在第
HttpContext.Current.Server.Execute行(page,writer,false)其显示:
执行处理程序“System.Web.UI.Page”的子请求时出错。
异常。原因是什么?

没有来自
LoadUserControl
服务器端脚本的
json
响应,您需要使用json响应。

由于您在用户控件内使用服务器端控件,因此引发异常。ASP.NET要求服务器端控件位于表单控件内,以正确呈现它们,否则会引发异常

要避免此异常,您需要更新代码,对于exmaple,如下所示:

HtmlForm form = new HtmlForm();
form.Controls.Add(userControl);
pageHolder.Controls.Add(form);
这将在表单中呈现用户控件,这可能会有问题。我建议您使用更干净的方法,而不需要更新面板和服务器端事件

问候,,
Uros

你能告诉我一个使用我的代码的例子吗?我不是JSON中Javascript的专家。
public static string LoadUserControl(string message)
    {
        using (Page page = new Page())
        {
            UserControl userControl = (UserControl)page.LoadControl("TopicRow.ascx");
            (userControl.FindControl("Title") as LinkButton).Text = message;
            page.Controls.Add(userControl);
            using (StringWriter writer = new StringWriter())
            {
                page.Controls.Add(userControl);
                HttpContext.Current.Server.Execute(page, writer, false);
                return writer.ToString();
            }
        }
    }
HtmlForm form = new HtmlForm();
form.Controls.Add(userControl);
pageHolder.Controls.Add(form);