[英]“Error executing child request for handler 'System.Web.UI.Page'.” while adding user control using JQuery
我正在使用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();
}
用戶控制代碼:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="TopicRow.ascx.cs" Inherits="TopicRow" %>
<link rel="stylesheet" type="text/css" href="Styles/Global.css" />
<asp:Panel ID="Panel1" runat="server" BorderColor="Maroon" Width="600px" style="margin:0">
<asp:LinkButton ID="Title" runat="server" Font-Bold="True" Font-Names="Segoe UI Semibold,Segoe UI Light, Tahoma, Geneva, Verdana, sans-serif" Font-Overline="False" ForeColor="Maroon" Text="This is a test title." Font-Size="Larger"></asp:LinkButton>
<br />
<asp:Label ID="lblAuthor" runat="server" Text="By: Aishwarya Shiva Pareek" Font-Size="Medium" ForeColor="#666666" Font-Names="Segoe UI Light, Tahoma, Geneva, Verdana, sans-serif"></asp:Label>
<br />
<br />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate><div style="float:right; height:32px; width:32px"><asp:UpdateProgress ID="UpdateProgress2" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
<img alt="Working..." class="auto-style5" src="Images/ajaxloader.gif" width="32px" height="32px" />
</ProgressTemplate>
</asp:UpdateProgress></div>
<div style="font-family:Segoe UI Light, Tahoma, Geneva, Verdana, sans-serif">
Upvoted By
<asp:Label ID="lblUp" runat="server" Text="23"></asp:Label>
| Down voted By
<asp:Label ID="lblDown" runat="server" Text="2"></asp:Label>
<br />
<asp:LinkButton ID="lnkUp" runat="server" ForeColor="#003300" OnClick="lnkSupport_Click">Up Vote</asp:LinkButton>
<asp:LinkButton ID="lnkDown" runat="server" ForeColor="Red">Down Vote</asp:LinkButton>
<asp:LinkButton ID="lnkAddComment" runat="server" ForeColor="Maroon">Add Comment</asp:LinkButton></div>
</ContentTemplate>
</asp:UpdatePanel>
<hr style="color:maroon;"/>
</asp:Panel>
用C#代碼添加用戶控件:
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();
}
}
}
但是在HttpContext.Current.Server.Execute(page, writer, false);
其顯示: Error executing child request for handler 'System.Web.UI.Page'.
例外。 可能是什么原因?
LoadUserControl
服務器端腳本沒有json
響應,您需要使用json響應。
拋出異常是因為您正在用戶控件內使用服務器端控件。 ASP.NET要求服務器端控件在表單控件中才能正確呈現它們,否則會引發異常。
要解決此異常,您需要更新代碼,例如:
HtmlForm form = new HtmlForm();
form.Controls.Add(userControl);
pageHolder.Controls.Add(form);
這會將用戶控件呈現在表單內,這可能會出現問題。 我建議您使用沒有更新面板和服務器端事件的更清潔的方法。
問候,Uros
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.