【问题标题】:How to set a master page object id (e.g div id) in code behind?如何在后面的代码中设置母版页对象 id(例如 div id)?
【发布时间】:2013-10-18 08:24:11
【问题描述】:

问题

  1. 如何在后台代码 (VB) 中设置母版页对象 id(例如 div id)?
  2. 如何更改子页面的id?

Root.Master

<%@ Master Language="VB" CodeFile="~/Root.master.vb" Inherits="Root"%>

<div id="<%=MyPage%>">
  <asp:ContentPlaceHolder ID="Content" RunAt="Server"/>
</div>

Root.Master.vb

Partial Class Root
    Inherits BaseMaster
End Class

Page.vb(在 App_Code 文件夹中)

Public Class BaseMaster
    Inherits System.Web.UI.MasterPage    
    Public MyPage As String    
End Class

Index.aspx.vb

Partial Class Index
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        CType(Me.Master, BaseMaster).MyPage = "Page"
    End Sub
End Class

【问题讨论】:

  • object id 是什么意思?喜欢this
  • 特别是body id。
  • 你为什么需要那个?你想应用一些 css 还是使用 javascripts?有什么具体原因吗?
  • 我正在使用 jquery mobile 并且需要每个页面的 body id 都不同以利用其全部功能。使用母版页可以节省大量重复代码。
  • 如果它只是一个 div。请参阅上面的编辑。这仍然对我有用。

标签: asp.net vb.net variables master-pages


【解决方案1】:

我认为当元素的 ID 设置为 runat="server" 时,您无法更改它。

要为正文标签提供多个 ID,您必须为所需的每个不同 ID 提供一个母版页,并通过代码选择母版页。

如果您想出于 CSS 目的更改其 ID,请考虑改用类。

编辑:如果你不需要 body 标签中的 runat="server" 属性,你可以这样:

基本思想是在母版页中为动态 id 设置一个变量,并能够从 .aspx 页面和 .ascx 控件中设置其值。

变量 BodyID 在继承 MasterPage 类的类中声明,而您的母版页则继承该类。

母版页标记

<body id="<%=BodyID%>">
    <form id="form1" runat="server">
    <div>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">

        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>

后面的母版页代码

Public Class Site1
    Inherits BaseMaster

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

End Class

BaseMaster 类

Public Class BaseMaster
    Inherits System.Web.UI.MasterPage

    Public BodyID As String

End Class

如何在 Web 表单中使用它

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    CType(Me.Master, BaseMaster).BodyID = "body_dynamic_id"
End Sub

【讨论】:

  • 您好,我刚刚编辑了我的答案,如果您不需要 runat="server" 标签,我举了一个关于如何动态设置 id 的示例。希望对你有帮助
  • 您需要在项目中设置一次。将一个空的 .vb 文件添加到您的项目中,然后将代码粘贴到那里。
  • 非常感谢您对此@codingstill 的帮助,但我无法让它工作。请参阅我上面的编辑。我错过了什么?错误是:确保此代码文件中定义的类与“继承”属性匹配,并且它扩展了正确的基类(例如 Page 或 UserControl)。
  • 好像是命名空间的问题。您是否在母版页后面的代码中看到此错误?如果是,请尝试此“继承 RootNamespace.BaseMaster”,其中 RootNamespace 放置了应用程序的根命名空间
  • 我做了一个演示网站,它可以正常工作。您是否将 Page.vb 文件放在 App_Code 文件夹中?
猜你喜欢
  • 1970-01-01
  • 2019-02-24
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-28
相关资源
最近更新 更多