Как вызвать методы главной страницы со страницы содержимого, когда кнопка находится внутри панели обновления?
у меня есть masterpage и страницей контента. На странице содержимого у меня есть диспетчер сценариев и панель обновления. На панели обновления я хочу иметь возможность нажать кнопку, которая ударит по общедоступному методу на главной странице, чтобы показать сообщение. Это работает, если у меня нет панели обновления на странице содержимого, но есть ли способ заставить ее работать, когда кнопка находится в панели обновления?
Главная Страница:
public void ShowMessage(string Message)
{
lblError.Text = Message;
lblError.Visible = True;
}
Содержание Страницы:
Master.ShowMessage("something");
5 ответов
Я думаю, что это немного поздно , но для тех, кто ищет решение,
предполагая, что ваш мастер-класс страницы, как:
public MyMAsterPage: MasterPage
{
public void ShowMessage(string Message)
{
// DO SOMETHING
}
}
со страницы содержимого вы можете легко вызвать любой открытый метод следующим образом:
(this.Master as MyMasterPage).ShowMessage("Some argument");
функция, которая определяется в masterpage:
public void Mesaj(string msj)
{
lbl_Mesaj.Text = msj;
}
функция, которая определяет на странице содержимого
protected void Page_Load(object sender, EventArgs e)
{
MasterPageWeb master = (MasterPageWeb)this.Master;
master.Mesaj("www.zafercomert.com");
}
вы можете вызвать функцию masterpage со страницы содержимого, как это.
Я закончил тем, что просто всасывал его и помещал диспетчер сценариев на главную страницу и помещал метку на главную страницу внутри панели обновления.
вам потребуется
this.button1 = this.Master.FindControl("UpdatePanel1").FindControl("Button1") as Button;
здесь блоге, чтобы помочь описать процесс. По сути, вы углубляетесь в управление.
редактировать
Извините, я просто перечитал ваш вопрос. Код выше позволит вам найти кнопку на Вашей странице Masterpage с вашей страницы содержимого codebehind.
немного сложнее выполнить метод Masterpage codebehind со страницы содержимого. Лучшим способом может быть JavaScript событие для вашей кнопки (или просто используйте jQuery) и поместите код для JavaScript модальное окно в вашей Masterpage.
<!-- script stuff -->
<script>
$(function() {
$( "#dialog" ).dialog({
autoOpen: false
});
$( "#opener" ).click(function() {
$( "#dialog" ).dialog( "open" );
return false;
});
});
</script>
<!-- end script stuff -->
<!-- dialog div -->
<div id="dialog" title="Basic dialog">
<p>say something meaningful</p>
</div>
<!-- end dialog div -->
<!-- content page stuff -->
<button id="opener">open alert</button>
<!-- end content page stuff-->
Если вы действительно подключены к вызову метода masterpage со страницы содержимого, вам нужно сделать метод общедоступным
найти информацию в Шаг 4: вызов открытых членов главной страницы со страницы контента
есть два способа, которыми страница содержимого может программный интерфейс с главной страницы:
- на странице.Master свойство, которое возвращает слабо типизированную ссылку на главную страницу, или
- укажите тип главной страницы или путь к файлу страницы с помощью директивы @MasterType; это автоматически добавляет строго типизированное свойство к странице с именем Master.
основываясь на решении Амина, я использовал метод расширения для решения этого чаще.
public static T GetMasterPageObject<T>(this MasterPage masterPage) where T : MasterPage
{
return (T)masterPage;
}
пример:
this.Master.GetMasterPageObject<MasterPageClass>().MethodYouNeed("Parameters");