Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 填充依赖于内容页的母版页控件的最佳方法是什么?_C#_Asp.net_Vb.net_Master Pages - Fatal编程技术网

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

C# 填充依赖于内容页的母版页控件的最佳方法是什么?,c#,asp.net,vb.net,master-pages,C#,Asp.net,Vb.net,Master Pages,我有一个名为SampleMaster.master的母版页,该页包含一个中继器控件 中继器控件将用于显示与每个内容页关联的相关标签,标签在内容页之间会有所不同 数据提取方法Tags.GetTags()正在工作,但我不知道根据内容页的内容在母版页中填充Repeater控件的最佳方法 代码是驻留在母版页代码隐藏中还是内容页代码隐藏中 如果可以的话,你应该把它放在母版页上。理想情况下,您的内容页应该不了解父级,并且应该假设它可以在任何地方使用 这将为您的内容页带来更组件化、可重用的设计。我建议在子页面

我有一个名为SampleMaster.master的母版页,该页包含一个中继器控件

中继器控件将用于显示与每个内容页关联的相关标签,标签在内容页之间会有所不同

数据提取方法Tags.GetTags()正在工作,但我不知道根据内容页的内容在母版页中填充Repeater控件的最佳方法


代码是驻留在母版页代码隐藏中还是内容页代码隐藏中

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


这将为您的内容页带来更组件化、可重用的设计。

我建议在子页面上公开一个属性或方法,将标记交给母版页显示。比如说

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文件中添加以下内容,可以通过内容页公开母版页中的功能:

<%@ MasterType VirtualPath="~/MasterPage.master" %>
然后在内容页中,您将使用以下命令调用函数:

Master.BuildMyCustomStuff(dataIn);

很好的解决方案。您需要将此.Page强制转换为imytagablepage才能调用该方法。这需要您的母版页了解内容页,如果您让内容页向母版页发送数据,母版页将不关心您有多少可能的内容页或它们做什么。您只需公开界面,就可以让内容页自定义母版页。这是一个很好的例子。允许母版页从子版页派生有关该页的信息,但不会不必要地耦合母版页或子版页。@Kelsey:两种方法都有效,但我更喜欢将母版页视为子版的观察者,因此子版页不会与母版页交互。这样,您可以在不更改任何内容的情况下插入嵌套母版页,并且它们都可以访问该页的成员。
public void BuildMyCustomStuff(YouInputType in)
{
    // Do something with the data passed in
}
Master.BuildMyCustomStuff(dataIn);