有什么方法可以防止母版页更改元素 ID?

发布于 2024-07-19 02:43:23 字数 244 浏览 3 评论 0原文

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

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

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

那么身份证原件可以保留吗?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

烟若柳尘 2024-07-26 02:43:23

该问题已在上一篇文章中得到解答:删除 MasterPage 生成的 ID

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

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

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
暖树树初阳… 2024-07-26 02:43:23

您可以覆盖控件中的 ClientID 和 UniqueID。 这是来自此处,由 Rick Strahl 撰写的文章。

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

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

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;
    }
}
仙气飘飘 2024-07-26 02:43:23

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

This question is old as dirt, but the new way to do it is ClientIDMode="Static".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文