Asp.net 如何在代码隐藏中设置母版页对象id(例如div id)?

Asp.net 如何在代码隐藏中设置母版页对象id(例如div id)?,asp.net,vb.net,variables,master-pages,Asp.net,Vb.net,Variables,Master Pages,问题 如何在代码隐藏(VB)中设置母版页对象id(例如div id) 如何更改子页面中的id Root.Master <%@ Master Language="VB" CodeFile="~/Root.master.vb" Inherits="Root"%> <div id="<%=MyPage%>"> <asp:ContentPlaceHolder ID="Content" RunAt="Server"/> </div> Pa

问题

  • 如何在代码隐藏(VB)中设置母版页对象id(例如div id)
  • 如何更改子页面中的id
  • Root.Master

    <%@ Master Language="VB" CodeFile="~/Root.master.vb" Inherits="Root"%>
    
    <div id="<%=MyPage%>">
      <asp:ContentPlaceHolder ID="Content" RunAt="Server"/>
    </div>
    
    Page.vb(应用程序代码文件夹中)

    Index.aspx.vb

    Partial Class Root
        Inherits BaseMaster
    End Class
    
    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
    

    我认为当元素设置为runat=“server”时,您无法更改其ID

    为了使body标签有多个ID,您必须为所需的每个不同ID有一个母版页,并通过代码选择母版页

    如果要更改CSS用途的ID,请考虑使用类。 编辑:如果您不需要body标记中的runat=“server”属性,您可以这样做:

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

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

    母版页标记

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

    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
    

    对象id
    的含义是什么?比如?特别是身份证。你为什么需要这个?您想应用一些css还是使用Java脚本?有什么具体原因吗?我正在使用jquery mobile,需要每个页面的主体id都不同,以充分利用其功能。使用母版页可以节省大量重复的代码。如果它只是一个div呢?请参阅上面的编辑。这对我来说仍然有效。您好,我刚刚编辑了我的答案,如果您不需要runat=“server”标记,我给出了一个关于如何动态设置id的示例。我希望它能帮助您在项目中设置一次。在你的项目中添加一个空的.vb文件,然后将代码粘贴到那里。非常感谢你在@codingstill上的帮助,但是我无法让它工作。请看我上面的编辑。我错过了什么?错误是:确保此代码文件中定义的类与“inherits”属性匹配,并且它扩展了正确的基类(例如Page或UserControl)。似乎存在命名空间问题。您是否在母版页的代码隐藏中看到此错误?如果是,请尝试此“Inherits RootNamespace.BaseMaster”,其中RootNamespace放置应用程序的根命名空间。我制作了一个演示网站,它工作正常,没有错误。您是否将Page.vb文件放入App_Code文件夹中?
    Public Class BaseMaster
        Inherits System.Web.UI.MasterPage
    
        Public BodyID As String
    
    End Class
    
    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