.net 为什么我不';看不到服务器端控件的生成ID?
我现在有点困惑。让我解释一下: 我见过有人谈论在asp.net(3.5)中向页面添加按钮或其他控件,当控件呈现时,它会更改该控件的Id,例如Button1变为Button1\u something阻止他们使用jQuery,他们最终使用的是.net 为什么我不';看不到服务器端控件的生成ID?,.net,asp.net,javascript,jquery,asp.net-3.5,.net,Asp.net,Javascript,Jquery,Asp.net 3.5,我现在有点困惑。让我解释一下: 我见过有人谈论在asp.net(3.5)中向页面添加按钮或其他控件,当控件呈现时,它会更改该控件的Id,例如Button1变为Button1\u something阻止他们使用jQuery,他们最终使用的是 所以我做了一个小测试 1. I added a button on the page: <form id="form1" runat="server"> <div> <asp:Button ID="Button1" runat="
所以我做了一个小测试
1. I added a button on the page:
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" />
<div>
2. Then I added a JavaScript and jQuery:
<script type="text/javascript">
$(document).ready(function() {
$("#Button1").click(function() {
alert("Hello world!");
});
});
</script>
3. The generated html is this:
<div>
<input type="submit" name="Button1" value="Button" id="Button1" />
<div>
1。我在页面上添加了一个按钮:
2.然后我添加了一个JavaScript和jQuery:
$(文档).ready(函数(){
$(“#按钮1”)。单击(函数(){
警报(“你好,世界!”);
});
});
3.生成的html如下所示:
现在,我没有看到ASP.NET(ASP.NET3.5)更改ID。为什么我会看到不同的行为
顺便说一句,当我按下按钮时,这确实有效
谢谢。ASP.NET仅在控件位于内部时更改ID。这可能包括某些用户控件、母版页的ContentPlaceHolder和重复控件(Repeater、GridView等)。ASP.NET默认情况下不会更改ID名称,但在母版页的ContentPlaceHolder中使用时会更改ID名称。因此,名称最终类似于ctl00\u contentplaceholder content\u Button1。在您的情况下,没有母版页,也没有进行任何更改。这是由于INamingContainer接口实现了某些控件(例如与母版页一起使用的asp:content控件) 发件人: 实现此功能的任何控件 接口在中创建新的命名空间 其中包含所有子控件ID属性 保证在一个 整个应用程序。记号笔 此接口提供的 对象的唯一命名 生成的服务器控件实例 在Web服务器控件中 支持数据绑定。这些控件 包括中继器、数据网格、, 数据列表,复选框列表, 更改密码、登录视图、菜单、, SiteMapNodeItem和RadioButtonList 控制
您的示例代码不使用这些控件中的任何一个。您不使用带有内容占位符的母版页。您的ID不会因此而更改。您可能并不总是需要使用control.ClientID,但这是一种很好的做法,这样当您的控件最终进入容器时,您就不必返回并修复它