html – 什么时候添加了ctl00前缀?

我有一个带有asp.net链接按钮和asp.net内容标签的简单asp.net页面,它指向一个带有asp.net内容占位符和表单标签的简单asp.net主页.以下是这两项的代码

的Site.Master:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="WebApplication1.SiteMaster" %>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
    <form runat="server">
            <asp:ContentPlaceHolder ID="MainContent" runat="server"/>
    </form>
</body>
</html>

Default.aspx的:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton>
</asp:Content>

出于某种原因,当我们在一台服务器上运行这个简单的Web应用程序时,链接bhutton获取的ID是MainContent_LinkBut​​ton1
当我们在另一台服务器上运行此应用程序时,链接按钮获取的id是_ctl0_MainContent_LinkBut​​ton1

Doese有人为什么我们在特定服务器中得到前缀ctl0而在另一台服务器中我们没有得到它?

解决方法

这是ASP.Net Web表单的认行为,因为HTML中的id必须是唯一的.有时ASP.Net必须根据它的父控件动态更改id.你可以在这里阅读更多 http://msdn.microsoft.com/en-us/library/1d04y8ss(v=vs.100).ASPX

通常你不必担心这个id.但是如果你需要客户端的id,例如编写一个需要通过id找到元素的javascript函数,你可以使用ClientId-property来获取控件的Id:

<script type="text/javascript">
      function test() {
          var myControl = document.getElementById('<%= myControl.ClientId %>');
      }

</script>

相关文章

vue阻止冒泡事件 阻止点击事件的执行 &lt;div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些