我有一个带有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_LinkButton1
当我们在另一台服务器上运行此应用程序时,链接按钮获取的id是_ctl0_MainContent_LinkButton1
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>