ASP.NET 4.0的ClientIDMode=”Static”未必是最好

ASP.NET 4.0新增的ClientIDMode是一項重大的更新,不知這是什 的話,可以在這裡看看。 預設ClientIDMode是Inherit 不過我想大多數人都會把焦點放在ClientIDMode=”Static”。

由於預設是Inherit,ClientIDMode會以預設的AutoID去制定Controls ID,或者有人會直接在Page Detective把ClientIDMode設定為”Static”供ClientIDMode去Inherit。

<%@Page ClientIDMode="Static"%>

那就不用每個WebControl都設定一次,但問題就來了,部份Third Party的WebControls未必能可以在Static ID下運作,特別是需要ClientScript做CallBack的,可能會找不到Render HTML後的ID。 目前至少AjaxControltoolKit中的AsyncFileUpload已經要設定ClientIDMode=”AutoID”才能正確運作。

而值得看看的是Predictable Mode,Predictable 主要是給Data Control使用,例如Repeater,DataList這些會重複Generate HTML Element的WebControls。 因為當你制定ItemTemplate時,你不可能期望每一項Item中的Controls ID都相同,同樣亦不合理,例如Repeater:

 <tr>
   <td>
     <span id="mySpan">Row1</span>
   </td>
 </tr>
 <tr>
   <td>
     <span id="mySpan">Row2</span>
   </td>
 </tr>

 

所以”Predictable”的出現就是給你設定ClientIDRowSuffix property,自行制定。其實我會建議在DataControl中ItemTemplate或EditTemplate下,所有Web Control都加上ClientIDMode為AutoID或者Predictable,即使設成AutoID感覺上很多餘,但基於有override的可能性,都是加上好一點。

或者ASP.NET老手已經深明這些道理,但剛學ASP.NET的話,亦無需要太追求簡短的ID,這類型ID,”ctl00_ContentPlaceHolder1_HideProductImage”,我們都習慣了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值