为什么id为asp.net中的控件动态生成

时间:2017-11-21 04:08:24

标签: c# asp.net webforms

我有一个控件,例如:

<asp:Button runat="server" id="button"></asp:Button>

实际ID是“按钮”,但在使用浏览器控制台的调试过程中,我可以找到类似“ctl100_but $ button”的ID。以下是我的疑惑。

1。)从哪里生成ctl100_but? 2.)这个id的目的是什么? 3.)有没有办法阻止这种动态生成?

感谢。

2 个答案:

答案 0 :(得分:2)

1&amp; 2.当asp.net将你的asp.net代码转换成浏览器可以理解的html代码时,这是由asp.net在后端生成的。唯一的目的是在我们使用转发器或gridview时避免重复ID,因为在这些情况下我们设计具有相同ID的Item模板,并且当渲染gridview或repeater时,则有多个项目。所以Asp.Net使用这种动态Id生成。 Gridview和转发器只是几个例子,还有更多这样的控件。

  1. 您始终可以通过在代码中添加ClientIDMode =“static”将其设置为与指定的相同。所以上面的代码看起来像:

    <asp:Button runat="server" ClientIDMode="static" id="button"></asp:Button>
    
  2. 只要没有重复的ID,将其设为静态不会影响任何内容。

答案 1 :(得分:0)

我想说这是框架的命名约定以及框架如何按照自己的方式工作。 请参阅详细信息https://msdn.microsoft.com/en-us/library/system.web.ui.clientidmode(v=vs.110).aspx