日期:2014-05-19  浏览次数:20444 次

能否设置服务器控件的在客客户端的ID或Name
能否设置服务器控件的在客户端的ID或Name?
如我有个TextBox服务器控件ID= "txtName "在客户端中会生成 <input   id= "ctl00$ContentPlaceHolder1$EditCategory1$txtName "   name= "ctl00$ContentPlaceHolder1$EditCategory1$txtName "/> 我想生成为 <input   id= "txtName "   name= "txtName "/>

------解决方案--------------------
ClinetID 是只读的

除非你自己重写控件

不过 不清除你为什么要这么做?

ctl00$ContentPlaceHolder1$EditCategory1$txtName

是为了体现层次关系 MS 故意真么做的 .NET 在postback的时候 要根据这个 精确定位你的元素。
------解决方案--------------------
<input id= "ctl00$ContentPlaceHolder1$EditCategory1$txtName " name= "ctl00$ContentPlaceHolder1$EditCategory1$txtName "/> 我想生成为 <input id= "txtName " name= "txtName "/>

==================================
因为在input控件外面的容器控件实现了命名容器接口,会自动给它的子控件命名成这种层次结构的名称.你不能更改的.你要想得到这个控件可以这样来得到


private void Repeater1_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{

if( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
{
DataList dlist = e.Item.FindControl( "dlist ") as DataList;//这个 dlist就是你的子控件

}
}
------解决方案--------------------
同意楼上

虽然不可以改变控件的ID,但是你可以得到控件的ID和name
然后把这个ID或者name 自动写进javescript的源码里面,问题就解决了