UpdatePanel, Placeholder, Пользовательский элемент управления загружен постом Ajax - PullRequest
0 голосов
/ 16 марта 2012

Я могу успешно добавить пользовательский элемент управления динамически, используя следующий код.

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 #.Когда заполнитель или литерал меняются, я

Ответы [ 2 ]

2 голосов
/ 16 марта 2012

Вместо использования 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

0 голосов
/ 16 марта 2012

UserControls (ASCX) прикрепляются к странице во время рендеринга на стороне сервера и не могут быть созданы с помощью Javascript, как это делают стандартные элементы HTML. Я бы предложил использовать div, содержащий стандартные элементы HTML, а не пользовательский элемент управления, и использовать библиотеку Javascript, например Jquery, для создания копий этого div, когда это применимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...