【问题标题】:ASP.NET Nested masterpages, how to set content in the top page from the aspx file?ASP.NET 嵌套母版页,如何从 aspx 文件中设置首页内容?
【发布时间】:2010-04-29 12:38:40
【问题描述】:

我有一些来自 CMS 的内容需要移动到原始的 asp.net 页面。由于模板是嵌套的,我想我可以使用嵌套母版页来完成它,但我发现我无法在深层子页面的顶部母版页上设置值。

这是一个示例。我有几个带有内容占位符的嵌套母版页:

  • 顶级大师(带有 contentPlaceHolder1)
  • 嵌套母版,依赖于顶级母版(使用 contentPlaceHolder2)
  • aspx 页面,依赖于嵌套母版,定义 contentPlaceHolder1 和 2 的内容

问题是asp.net不允许我在内容页面中定义contentPlaceHolder1的值,它应该在嵌套母版中定义。但关键是客户端页面知道该值,而不是模板母版(例如,页面知道它必须在顶部显示的图形,但图形的占位符是顶部母版)。

如何在 aspx 页面中设置要在顶级母版中呈现的值?

【问题讨论】:

    标签: asp.net master-pages nested


    【解决方案1】:

    通常您必须执行以下操作:

    1. 在母版页上设置公共属性
    2. 将@MasterPage 声明添加到您要在其中访问属性的任何内容页面的顶部
    3. 访问属性,如Master.YourPageProperty = "value";

    在嵌套母版页的情况下,您还必须使用上述相同方法设置传递公共属性,但在嵌套母版页中进行(即定义嵌套母版页母版页并设置仅设置值传递给嵌套主控到顶级主控)。

    尝试查看这篇文章以强化我所触及的想法:

    【讨论】:

    • 我喜欢传递属性的想法。事实证明,您还可以在嵌套母版中定义一种传递 contentPlaceHolders,如下所示:
    【解决方案2】:

    我通常让我的所有 .aspx 页面都继承自一个基本页面,并在此页面上为我想要共享的任何数据设置属性。然后,在您的顶级母版页上,您可以将当前页面转换为 basepage 类型,然后可以访问所有数据。

    我通常也将基页作为我的母版页上的属性公开,这样我可以进行软转换并进行空值检查,如果我有任何情况下不从我的基页继承的页面正在使用母版页。

    【讨论】:

      猜你喜欢
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多