Predictable ID的后缀的作用?

weixin_38089150 2016-07-11 07:05:13
Default2.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %>
<%@ Register Src="~/WebUserControl.ascx" TagPrefix="uc1" TagName="WebUserControl" %>
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<div runat="server" id="myDiv">
<uc1:WebUserControl runat="server" ID="WebUserControl" />
</div>
</ItemTemplate>
</asp:Repeater>
</form>
</body>
</html>
WebUserControl.ascx
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="WebUserControl.ascx.vb" Inherits="WebUserControl" %>

<asp:Label ID="myLabel" runat="server">你好</asp:Label>
这样生成的HTML代码是
<div id="Repeater1_myDiv_0">
<span id="Repeater1_WebUserControl_0_myLabel_0">你好</span>
</div>

<div id="Repeater1_myDiv_1">
<span id="Repeater1_WebUserControl_1_myLabel_1">你好</span>
</div>

我的ClientIDMode是Predictable,为什么span id的myLabel后面还会附加数字,如上面代码的粗体部分?
我觉得Repeater1_WebUserControl_0_myLabel和Repeater1_WebUserControl_1_myLabel已经可以区分了呀。
我发现这个后缀是Control.GetPredictableClientIDSuffix()添加的,但是为什么需要有这段代码?为什么在myLabel后面还需要添加父命名容器的DisplayIndex?能否给出一个例子,在不添加suffix时两个控件会有相同client id?

...全文
12 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧