C# &引用;执行处理程序的子请求时出错';System.Web.UI.Page'&引用;使用JQuery添加用户控件时
我正在使用JQuery动态加载ASP.NET用户控件: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
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);