Any way to prevent master pages from changing elem

2019-01-19 19:53发布

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?

2条回答
冷血范
2楼-- · 2019-01-19 20:11

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
查看更多
疯言疯语
3楼-- · 2019-01-19 20:15

You can override ClientID and UniqueID in the controls. This is from here, an article by Rick Strahl.

public override string UniqueID
{
    get
    {
        return this.ID;
    }
}

public override string ClientID
{   
    get
    {
        return this.ID;
    }
}
查看更多
登录 后发表回答