【问题标题】:ASP.NET how to set text on a master page?ASP.NET 如何在母版页上设置文本?
【发布时间】:2010-12-03 15:11:05
【问题描述】:

我有一个名为 MasterPage.master 的母版页,其中有一个 <fieldset> 和一个 <legend> 标记。像这样的:

<fieldset id="NewTrade" runat="server">
    <legend runat="server" class="legend"><%= this.BodyTitle %></legend>
    <asp:ContentPlaceHolder id="contentMain" runat="server" />       
</fieldset>

masterpage.master 文件从 SiteMaster.cs 继承 SiteMaster。 SiteMaster 有一个名为 BodyTitle 的公共字段。我想在正常页面加载时设置 BodyTitle,但我不知道该怎么做。基本上我想做的就是在我的主内容周围有一个图例,然后在每个页面的页面加载时设置图例文本。最好的方法是什么?

所以,比如说 Default.aspx,我想在 Page_Load 中做这样的事情:

BodyTitle.Text = "Home"

谢谢

【问题讨论】:

    标签: c# asp.net c#-4.0


    【解决方案1】:
    (this.Master as SiteMaster).BodyTitle.Text = "Home";
    

    这会将您的 Page 的母版页属性转换为基类 SiteMaster。您也可以将其直接转换为 MasterPage 类(来自您的 MasterPage.master),但如果您要这样做,那么@Greg 的答案会更好,尽管它们都可以工作。只是取决于你的要求。设置 aspx 页面的 MasterType 属性是一个很好的解决方案,但是如果您正在做母版页的动态切换或者想要更灵活,那么上面的解决方案会更适合。

    【讨论】:

    • 我不确定 BodyTitle 属性是什么,或者它是否具有 Text 属性,我只是使用 OP 的示例。我的回答只是为了说明如何从内容页面访问母版页的属性(在本例中为自定义属性 BodyTitle)。
    【解决方案2】:

    您将使用Page 对象的Master 属性,并将其转换为您的SiteMaster 类。

    ((SiteMaster)this.Master).BodyTitle = "Home";
    

    【讨论】:

      【解决方案3】:

      您可以将其放在内容页面的顶部:

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

      这将自动使您的页面的 Master 属性成为您的主类的类型,因此您可以在不强制转换的情况下访问该属性。

      【讨论】:

        【解决方案4】:

        将文本保存在变量中。

        public string Heading { get; set; }
        

        然后从另一个页面将值添加到这个变量;

        (this.Master as Site1).Heading = "Hello"; 
        

        【讨论】:

          猜你喜欢
          • 2010-09-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多