Элемент управления ASCX: как отобразить его в предопределенной части (главной) страницы?

У меня есть элемент управления ASCX, который в основном содержит просто DIV с несколькими кнопками ASP внутри. Моя главная страница содержит форму ASP.NET, которую я хочу вызвать при нажатии одной из вышеупомянутых кнопок. Этот DIV невидим по умолчанию и становится видимым, чтобы служить диалогом, который обрабатывается подключаемым модулем JQuery BlockUI. Итак, в какой-то момент пользователь увидит этот DIV, и я хочу, чтобы обратная передача происходила, когда пользователь нажимает кнопку.

Моя проблема: ASCX прикреплен к MasterPage через директиву:

 (file MasterPage begins:)

 <%@ Master Language="C#" Inherits="GIUMasterPage" CodeBehind="MasterPage.master.cs"
AutoEventWireup="True" %>
 <%@ Register Src="uscMsgBox.ascx" TagName="uscMsgBox" TagPrefix="uc2" %>

 (HTML head, body form opening tags are below). 

Изучение страницы показывает, что ее DIV появляется в конце результирующего HTML-кода вне тега формы. В результате, когда он виден и нажата кнопка, обратной передачи не произошло. Я пошел дальше, подключив javascript-вызов свойства onClientClick кнопки к функции __doPostBack. Постбэк начал происходить, но не было вызова обработчиков кнопок.

Я уверен, что если код DIV ASCX появится в тегах HTML формы, обратная передача будет происходить должным образом.

Итак, мой вопрос: как я могу указать какой-либо директивой поместить содержимое ASPX DIV в теги FORM, а не в конец страницы? Я могу изменять MasterPage и сам ASPX.


person Askar Ibragimov    schedule 16.08.2012    source источник


Ответы (3)


Диалог пользовательского интерфейса jQuery перемещается в конец тела за пределы вашей формы. Хитрость заключается в том, чтобы переместить div диалога обратно внутрь вашей формы, когда вы его открываете.

пример

См. https://stackoverflow.com/a/1140541/26226 и http://блог.roonga.com.au/2009/07/using-jquery-ui-dialog-with-aspnet-and.html.

person jrummell    schedule 16.08.2012

Попробуйте что-то вроде этого там, где вы хотите, чтобы ваш .ashx был загружен:

<div>
     <uc2:uscMsgBox ID="yourId" runat="server"></uc2:uscMsgBox>
</div>
person Jorge Loureiro    schedule 16.08.2012

На самом деле это было легко, просто вызвать метод JQuery appendTo (), который перемещает DIV в другое место. http://api.jquery.com/appendTo/

person Askar Ibragimov    schedule 16.08.2012