C#代码为input标签注册onfocus事件:
InDateTextBox.Attributes["onfocus"] = "onInDateFocus ('" + InDateTextBox.ClientID + "')";
但是查看源文件发现单引号被HTML编码成“'”:
onfocus="onInDateFocus ('ctrl6_InDateTextBox')"
单引号被编码成(去掉感叹号):&!#39;
昨天粗心,没有发现源文件中ID是不一样的。将自己的注释供参考……
/*
* 关键是ClientID的生成模式问题,单引号HTML编码成“'”不是问题。
* ClientIDMode属性设置:
* Inherit:继承上一级容器控件
* Predictable:默认的模式(容器控件id_模板控件id_行数)
* AutoID:.NET 4.0以前的模式(容器控件id_ctrl(行数)_模板控件id)
* 因为以前版本不添加前缀“容器控件id_”,所以也不能像以前一样处理。
* Static:模板控件id
* 问题:造成所有控件的id重名。
*
* Name属性,相当于是AutoID模式。
*/
InDateTextBox.Attributes["onfocus"] = "onInDateFocus (this.id)";