我有一个名为SampleMaster.master的母版页,此页面包含一个Repeater控件
Repeater控件将用于显示与每个内容页面关联的相关标签,并且标签会因内容页面而异
数据提取方法Tags.GetTags()正在运行,但我不知道在母版页中填充Repeater控件的最佳方法,具体取决于内容页面的内容。
代码是否位于后面的母版页页面代码或后面的内容页面代码中?
答案 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);