Или любой жизнеспособный обходной путь.
Итак, представьте себе главную страницу, которая реализует IFooMaster
с методом ShowFancyMessagePopupTheBusinessCantLiveWithout(string message);
Я нахожусь на странице, которая наследует эту главную страницу. Если флажок снят, я хочу показать пользователю сообщение о том, что если он сохранит его, он не сможет повторно установить флажок без каких-либо действий администратора.
Мне сообщили, что я не могу просто использовать alert('message');
в javascript, потому что они хотят, чтобы эти сообщения выглядели единообразно.
Затем я попытался сделать ajax-вызов через PageMethods (как и все, что используется в этой кодовой базе), чтобы показать сообщение. Моя проблема заключается в том, что этот метод статичен.
[WebMethod]
public static void ShowSuperImportantMessage()
{
if(!checkboxICareAbout.Checked)
((IFooMaster)Master).ShowFancyMessagePopupTheBusinessCantLiveWithout("If you uncheck that thing, you can't recheck it.");
}
Поскольку ShowSuperImportantMessage()
- это static
, я не могу получить доступ к Master
изнутри.
Метод на главной странице выглядит примерно так:
public void ShowFancyMessagePopupTheBusinessCantLiveWithout(string message)
{
lblGenericMessage.Text = message;
btnGenericMessageOK.Focus();
upGenericMessage.Update();
mpeGenericMessage.Show();
}
mpeGenericMessage
является ajaxtoolkit: ModalPopupExtender.
upGenericMessage
- панель обновления.
Остальные 2 очевидны.
Есть идеи? Могу ли я сделать jQuery кунг-фу, чтобы показать это? Я пытался, но решение жаловалось, что элементы управления, на которые я пытался ссылаться посредством ClientID, не были разрешены, поскольку они были на главной странице.
быстрое редактирование : Прежде чем кто-нибудь скажет мне, что архитектура является проблемой, или я не должен был помещать такую вещь на главной странице, или ж / е ...
Я знаю, что ситуация не идеальна, но я это унаследованный код, и я не могу отбросить все это и переписать половину их веб-стека.