0

问题

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

根主

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

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

根主.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

索引.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
4

1 回答 1

1

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

为了有多个 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
于 2013-10-18T08:42:59.517 回答