Search code examples
asp.netmaster-pagesasp.net-3.5

Any way to prevent master pages from changing element IDs?


I'm looking at adding master pages to an existing site but have found that once I do, the elements' IDs get prepended with a code (e.g. ctl00_MainPageContent_).

Unforunately, this breaks existing scripts on the page that use the original, unmodified element ID.

I realize that I can replace it with <%= Element.ClientID %> but it'd be awesome if I could disable this behavior altogether.

So, can I keep the original IDs?


Solution

  • The question was already answered in the previous post: Remove MasterPage Generated ID

    The solution overrides the Render Event with the following code:

    Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
        Dim Html As New StringWriter()
        Dim Render As New HtmlTextWriter(Html)
        MyBase.Render(Render)
        writer.Write(Html.ToString().Replace("name=""ctl00$ContentBody$", _ 
                      "name=""").Replace("id=""ctl00_ContentBody_", "id="""))
    End Sub