填充依赖于内容页面的母版页控件的最佳方法是什么?

时间:2009-08-20 23:22:48

标签: c# asp.net vb.net master-pages

我有一个名为SampleMaster.master的母版页,此页面包含一个Repeater控件

Repeater控件将用于显示与每个内容页面关联的相关标签,并且标签会因内容页面而异

数据提取方法Tags.GetTags()正在运行,但我不知道在母版页中填充Repeater控件的最佳方法,具体取决于内容页面的内容。

代码是否位于后面的母版页页面代码或后面的内容页面代码中?

3 个答案:

答案 0 :(得分: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.
    }
}

然后在您的母版页上,您可以编写如下内容:

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

答案 1 :(得分:0)

如果可以,您应该将它放在母版页中。理想情况下,您的内容页面应该不了解父级,并且应该假定它可以在任何地方使用。

这将为您的内容页面带来更加组件化,可重复使用的设计。

答案 2 :(得分:0)

您可以通过将以下内容添加到内容页面aspx文件,通过内容页面在主页面中公开功能:

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

然后,在您的内容页面中,您应该能够访问从母版页中公开的任何方法。

所以你的主页面会有一个方法:

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

然后在您的内容页面中,您将使用以下命令调用该函数:

Master.BuildMyCustomStuff(dataIn);