2009-08-20 14 views
2

我有一個名爲SampleMaster.master母版頁和該頁面包含一個Repeater控件填充依賴內容頁面的主頁控件的最佳方法是什麼?

Repeater控件將用於顯示與每個內容頁面相關聯的相關標籤和標籤將內容頁之間變化

數據提取方法Tags.GetTags()正在工作,但我不知道根據內容頁面的內容在母版頁中填充Repeater控件的最佳方法。

代碼將駐留在主頁頁面代碼後面還是內容頁面代碼後面?

回答

5

我會建議在子頁面上顯示一個屬性或方法,它將主頁上的標籤顯示出來。例如

partial class myPage : IMyTaggablePage 
{ 
    // the following is an interface member 
    public List<string> GetTags() 
    { 
     return this.Taglist; // assuming taglist was populated somewhere on this page. 
    } 
} 

那麼你的主頁上,你可以寫的東西,如:通過添加以下到您的內容頁面aspx文件

if (this.Page is IMyTaggablePage) 
    var tags = (Page as IMyTaggablePage).GetTags(); 
+0

好的解決方案。您需要將此頁面轉換爲IMyTaggablePage才能調用該方法。 – 2009-08-20 23:32:31

+0

謝謝。錯過了。 – Joel 2009-08-20 23:34:06

+0

這將要求你的母版頁瞭解內容頁面,如果你讓內容頁面發送數據給主,你的主人不會關心你有多少可能的內容頁面或他們做了什麼。您只需公開界面以使內容頁面自定義母版頁。 – Kelsey 2009-08-20 23:34:39

0

如果可以的話,你應該把它放在masterpage上。理想情況下,你的內容頁面不應該有父母的知識,應該假設它可能在任何地方使用。

這將爲您的內容頁面帶來更多組件化,可重用的設計。

0

您可以在母版頁通過您的內容網頁公開功能:

<%@ MasterType VirtualPath="~/MasterPage.master" %> 

然後在您的內容頁面中,您應該能夠訪問您從母版頁中公開的任何方法。

所以你掌握網頁將有一個像方法:

public void BuildMyCustomStuff(YouInputType in) 
{ 
    // Do something with the data passed in 
} 

然後在你的頁面內容,你會調用與功能:

Master.BuildMyCustomStuff(dataIn); 
相關問題