Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 为什么我不';看不到服务器端控件的生成ID?_.net_Asp.net_Javascript_Jquery_Asp.net 3.5 - Fatal编程技术网

.net 为什么我不';看不到服务器端控件的生成ID?

.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="

我现在有点困惑。让我解释一下:

我见过有人谈论在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="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,但这是一种很好的做法,这样当您的控件最终进入容器时,您就不必返回并修复它