#c# #asp.net #ajaxcontroltoolkit #modalpopupextender
#c# #asp.net #ajaxcontroltoolkit #modalpopupextender
Вопрос:
Я пытаюсь создать модальное окно по умолчанию, которое должно быть доступно из любой части приложения и должно вызываться всякий раз, когда я захочу, изнутри любой страницы. (должно вызываться из code-behind).
Итак, мне пришла в голову идея Panel ModalPopupExtender, размещенного на MasterPage, и вызывать его с дочерних страниц с помощью встроенного кода.
Как я могу это сделать? Или, возможно, у вас, ребята, есть идея получше, как решить эту проблему.
Комментарии:
1. Должно ли это вести себя иначе, чем, скажем, перенаправление на другую страницу и возврат после завершения работы с диалогом? Или я запутался, и под «code-behind» вы имеете в виду какой-то JavaScript на вашей странице?
2. Просто хочу показать модальное окно, которое пользователь может прочитать, а затем закрыть. (Код позади = файл .cs)
Ответ №1:
Поскольку модальный должен вызываться из исходного кода, вы можете добиться этого следующим образом
Добавьте метод на свою главную страницу
public class MyMaster : MasterPage
{
public void ShowModal(string someParameter)
{
// Do your logic here
// Show the modal
}
}
Затем добавьте метод на свою страницу или базу страниц, подобную этой…
public void ShowModal(string someParameter)
{
MyMaster masterPage = this.Master as MyMaster;
masterPage.ShowModal(someParameter);
}
Я рекомендую использовать базовый класс для ваших страниц, чтобы вам не пришлось копировать описанный выше метод.
Комментарии:
1. Это, безусловно, сработает, если я использую ModalPopupExtender, но что, если я захочу показать какую-то другую панель или div, используя что-то вроде ajax (updatepanels не будет работать, потому что триггеры не находятся на одной странице)?
2. Это правда. Вы можете создать пользовательский элемент управления, который использует общий код javascript для использования AJAX для извлечения содержимого и отображения его во всплывающем модальном окне.
Ответ №2:
Добавьте метод на свою главную страницу. Например:
public void ShowMpSignup4free()
{
mpSignup4free.Show();
}
Затем вызовите этот метод из кода, находящегося за страницей, следующим образом:
protected void lbSignin_Click(object sender, EventArgs e)
{
MasterPages_WebMasterPage wm = (MasterPages_WebMasterPage)(this.Master);
wm.ShowMpSignup4free();
}
Здесь mpSignup4free — это идентификатор ModelPopupExtender, а MasterPages_WebMasterPage — это имя главной страницы (WebMasterPage — это имя главной страницы, размещенной в папке MasterPages. Вот почему полное название главной страницы — MasterPages_WebMasterPage).
а lbSignin — это кнопка ссылки на странице, главной страницей которой является WebMasterPage, событие нажатия на которую покажет всплывающее окно модели.
Чтобы избежать обратной публикации, поместите кнопку ссылки lbSignin в UpdatePanel…