Невозможно вызвать модальное всплывающее окно главной страницы на дочерней странице

Я использую модальное всплывающее окно для отображения окна входа в систему. Модальное всплывающее окно находится на главной странице и связано со ссылкой для входа в систему. Теперь я хочу вызвать то же модальное всплывающее окно на дочерней странице с помощью другой кнопки ссылки. Модальное всплывающее окно может быть вызвано ссылкой входа в систему на главной странице, но я хочу добавить этот второй элемент управления (linkButton) на дочернюю страницу, который может вызывать модальное всплывающее окно главной страницы.

Я пробовал это на дочерней странице:

function LogIn2()
{
$find("programmaticModalPopupBehavior").show();
} 

<asp:LinkButton ID="LinkButton1" runat="server" OnClientClick="LogIn2">Log in</asp:LinkButton>

Ссылка: несколько TargetControls для ModalPopup

Как вызвать функциональное модальное всплывающее окно главной страницы из элемента управления на дочерней странице ??

Обновление:

Это на главной странице:

<ajax:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="linkLog" CancelControlID="linkClose" BackgroundCssClass="cssModal"                       PopupControlID="panelPopUp" BehaviorID="programmaticModalPopupBehavior" PopupDragHandleControlID="panelDrag"></ajax:ModalPopupExtender>

person Jayesh    schedule 15.08.2011    source источник
comment
Является ли ModalPopupBehaviorID фактическим идентификатором модального всплывающего окна, как в UniqueID?   -  person James Johnson    schedule 16.08.2011
comment
@James - это идентификатор поведения модального всплывающего окна, а не идентификатор модального всплывающего окна. Использование последнего тоже не работает.   -  person Jayesh    schedule 17.08.2011


Ответы (2)


Добавьте OnClientClick для LinkButton, например:

<asp:LinkButton ID="LinkButton1" runat="server" Text="Login 2" OnClientClick="return LogIn2()" ...>

Поместите функцию JavaScript на главную страницу и после отображения всплывающего окна попросите метод вернуть false, чтобы LinkButton не выполнял обратную передачу:

function LogIn2()
{
    $find("<%=ModalPopupExtender1.UniqueID%>").show();
    return false;
}

В качестве альтернативы вы также можете добавить return false в OnClientClick LinkButton после выполнения функции LogIn2, например:

<asp:LinkButton ID="LinkButton1" runat="server" Text="Login 2" OnClientClick="LogIn2();return false;" ...>
person James Johnson    schedule 17.08.2011
comment
Выдает ошибку: имя ModalPopupExtender1 не существует в текущем контексте - person Jayesh; 17.08.2011
comment
Замените ModalPopupExtender1 идентификатором модального расширителя всплывающих окон. - person James Johnson; 17.08.2011
comment
Ссылка обновляет страницу, когда я использую это: $ find (ModalPopupExtender1) .show (); - person Jayesh; 17.08.2011
comment
Идентификатор моего модального всплывающего окна такой же, проверьте обновленный вопрос. И да, модальное всплывающее окно находится на главной странице - person Jayesh; 17.08.2011
comment
Поместите функцию JavaScript на главную страницу и просто вызовите ее с дочерней страницы. В любом случае это будет работать лучше, потому что тогда вам не нужно будет добавлять функцию JS на каждую страницу, открывающую всплывающее окно. - person James Johnson; 17.08.2011
comment
Тогда тоже не работает. И у меня уже есть ссылка для входа на главной странице. Я должен предоставить альтернативную ссылку для входа только на одной дочерней странице, поэтому загрузка javascript для всех других страниц не требуется. - person Jayesh; 17.08.2011
comment
Да, но ссылка для входа на главную страницу является целевым элементом управления диалогового окна. Что произойдет, если вы поместите функцию LogIn2 на главную страницу в моем примере? - person James Johnson; 17.08.2011
comment
Страница обновляется при нажатии кнопки «Войти». - person Jayesh; 17.08.2011
comment
Хорошо, тогда как будет вызываться функция javascript, если я продолжу, чтобы onClient возвращал false? - person Jayesh; 17.08.2011
comment
При использовании 1-го метода: страница снова обновляется. Использование 2-го метода: я получаю ошибку нулевого объекта в функции javascript. - person Jayesh; 17.08.2011
comment
Я продолжаю лажать. См. Отредактированный ответ. Я добавил return LogIn2 (); в событие OnClientClick LinkButton. - person James Johnson; 17.08.2011
comment
Вы все еще получаете ошибку нулевого объекта? Вероятно, это означает, что модальное всплывающее окно не обнаруживается. Можете ли вы попробовать использовать document.getElementById (‹% = ModalPopupExtender1.UniqueID%›), чтобы узнать, имеет ли это значение? Мы можем изменить это позже, но сначала я хочу исключить очевидное. - person James Johnson; 17.08.2011
comment
вы добавили return false внизу функции JS и вернули LogIn2 () в OnClientClick LinkButton. Это определенно не должно быть отправлено обратно, если вы возвращаете false в OnClientClick. - person James Johnson; 17.08.2011
comment
Я не добавил return false при использовании document.getElement; теперь, когда я его добавил, при нажатии кнопки входа в систему ничего не происходит. Все по-прежнему. Если я использую метод $ find вместо document.getElement, я получаю ошибку нулевого объекта. - person Jayesh; 17.08.2011

Я не уверен в этом, но позвольте мне подтвердить, используете ли вы элемент управления ajax, как показано ниже

 <asp:ModalPopupExtender ID="ImageUploaderEx" runat="server"  BehaviorID="ImageUploaderBID" TargetControlID="Link Name" CancelControlID="Cancel"  PopupControlID="Panel to be open" OnCancelScript="hideUploader()"></asp:ModalPopupExtender>

Если да, то вы можете использовать тот же модальный файл с другим именем. Если это не сработает, дайте мне знать, я постараюсь изо всех сил.

попробуйте это, если это сработает

((ModalPopupExtender)Page.Master.FindControl("ModalPopupExtender1")).Show();

и также добавьте это

using AjaxControlToolkit;
person Aman Rohilla    schedule 16.08.2011
comment
Пожалуйста, проверьте обновление вопроса для использования модальных всплывающих окон. - person Jayesh; 17.08.2011
comment
Страница обновляется при нажатии на ссылку - person Jayesh; 19.08.2011
comment
Да, вам придется повторно показывать это всплывающее окно после завершения загрузки страницы - person Aman Rohilla; 23.08.2011