我可以使用以下代码动态添加用户控件。
ASPX:
<asp:PlaceHolder ID="PlaceHolder1" runat="server" />
代码背后:
UserControl uc = (UserControl)Page.LoadControl
("~/App_Controls/Site/Player/PlayerProfile2.ascx");
PlaceHolder1.Controls.Add(uc);
现在我想加载用户以响应按钮点击。我有代码通过执行ajax帖子提交表单。
$(document).ready(function () {
var options =
{
success: showResponse,
url: "/Default.aspx",
type: "post"
};
$('#btnClick').click(function () {
$("form").ajaxSubmit(options);
return false;
});
});
function showResponse(responseText, statusText, xhr, $form)
{
alert(responseText);
}
<asp:Button ID="btnClick" ClientIDMode="Static" runat="server" Text="Click" />
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:PlaceHolder ID="PlaceHolder1" runat="server" />
<asp:Literal ID="litText" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
我是C#的新手。当占位符或文字被更改时,我
答案 0 :(得分:2)
我不使用jQuery AJAX,而是使用内置的ASP.NET AJAX;它将为您提供更简单的体验。 http://weblogs.asp.net/sanjeevagarwal/archive/2008/07/22/Dynamically-create-ASP.NET-user-control-using-ASP.NET-Ajax-and-Web-Service.aspx。通过移动UpdatePanel内的按钮,按钮生成的任何PostBack都将被.NET框架拦截并作为部分回发提交(使用AJAX)。这应该为您在使用.NET AJAX样式后实现目标提供了坚实的起点。
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="btnClick" ClientIDMode="Static" runat="server" Text="Click" />
<asp:PlaceHolder ID="PlaceHolder1" runat="server" />
<asp:Literal ID="litText" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
在CodeBehind文件中,您可以使用IsPostBack
有条件地显示或隐藏您的用户控件。
但是,如果您更愿意坚持使用当前的方法,那么这个博客就有一个比我在此处输入更完整的好例子:http://www.aspsnippets.com/Articles/Dynamically-load-and-display-ASPNet-UserControl-using-jQuery-AJAX-and-WebMethod.aspx
答案 1 :(得分:0)
UserControls(ASCX)在服务器端呈现期间附加到页面,无法使用Javascript以标准HTML元素的方式创建。我建议使用包含标准HTML元素而不是用户控件的div,并使用Jquery等Javascript库在适用时创建此div的副本。