是否可以防止母版页更改元素ID?

问题描述 投票:6回答:3

我正在考虑将母版页添加到现有站点,但发现一旦这样做,元素的ID前面就会加上代码(例如ctl00_MainPageContent_)。

不幸的是,这会破坏页面上使用原始未修改元素ID的现有脚本。

我意识到我可以用<%= Element.ClientID %>代替它,但是如果我可以完全禁用此行为,那就太好了。

所以,我可以保留原始ID吗?

asp.net master-pages asp.net-3.5
3个回答
5
投票

上一个帖子中已经回答了这个问题:Remove MasterPage Generated ID

该解决方案使用以下代码覆盖Render事件:

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

4
投票

您可以在控件中覆盖ClientID和UniqueID。 [摘自here,Rick Strahl的文章。

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

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

0
投票

这个问题已经很久了,但是新的解决方法是ClientIDMode="Static"

© www.soinside.com 2019 - 2024. All rights reserved.