[英]How do you call master page methods from a content page when the button is inside an update panel?
我有一個母版頁和一個內容頁。 在內容頁面中,我有一個腳本管理器和一個更新面板。 在更新面板中,我希望能夠單擊一個按鈕,該按鈕會點擊母版頁上的公共方法以顯示消息。 如果我在內容頁面上沒有更新面板,這會起作用,但是當按鈕位於更新面板中時,有沒有辦法讓它工作?
母版頁:
public void ShowMessage(string Message)
{
lblError.Text = Message;
lblError.Visible = True;
}
內容頁面:
Master.ShowMessage("something");
我認為現在有點晚了,但對於那些正在尋找解決方案的人來說,
假設您的母版頁類如下:
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 的功能。
我最終只是把它搞砸了,把腳本管理器放在母版頁上,把標簽放在更新面板內的母版頁上。
基於 Amin 的解決方案,我使用了一種擴展方法來更頻繁地解決這個問題。
public static T GetMasterPageObject<T>(this MasterPage masterPage) where T : MasterPage
{
return (T)masterPage;
}
示例:
this.Master.GetMasterPageObject<MasterPageClass>().MethodYouNeed("Parameters");
你需要
this.button1 = this.Master.FindControl("UpdatePanel1").FindControl("Button1") as Button;
這是一篇有助於描述該過程的博客文章。 基本上,您正在深入了解您的控件。
抱歉,我剛剛重新閱讀了您的問題。 上面的代碼將允許您從您的內容頁面代碼隱藏中在您的主頁上找到一個按鈕。
從內容頁面執行 Masterpage 代碼隱藏方法要困難一些。 更好的方法可能是將 JavaScript 事件添加到您的按鈕(或僅使用 jQuery),並將 JavaScript 模式窗口的代碼放在您的母版頁中。
<!-- 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-->
如果您真的很喜歡從內容頁面調用母版頁方法,則需要將該方法設為公開
內容頁面可以通過兩種方式與其母版頁進行編程交互:
- 使用 Page.Master 屬性,該屬性返回對母版頁的松散類型引用,或
- 通過@MasterType 指令指定頁面的母版頁類型或文件路徑; 這會自動向名為 Master 的頁面添加強類型屬性。
<%@ MasterType VirtualPath="~/masters/SourcePage.master" %>
Master.Method(); (在后面的代碼中)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.