用户控件自动加前缀的问题,加js脚本的问题

yuemb369 2006-12-25 12:38:10
大家都应该知道,当创建一个用户自定义控件UserControl,拖放到页面上后,asp.net会自动在控件的ID前加上页面的ID,类似pageID_控件ID,这样可以避免id重名
但是存在一个问题,如果我在控件中加入js脚本,如果用 document.getElementById()方法获取某个控件,就会因为名称的改变而取不到,我也想到过一个办法,例如:在用户控件中初始化一个public的字符串,然后,例如:public string str="";
page_load()
{
str = base.PageID;
}
然后在客户端加入这个串:
假设有个js方法:function GetApp(s){document.getElementById(s+"_"+"客户端控件ID")}
调用:onclick='GetApp("<%=str%>")'
虽然这样也能解决问题,但是毕竟比较麻烦,并且在usercontrol中再嵌入UserControl就会更麻烦,请问有没有更好的办法..
请不吝赐教..
...全文
294 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuemb369 2006-12-27
  • 打赏
  • 举报
回复
看来是没有非常好的办法,不过谢谢各位.
cpp2017 2006-12-25
  • 打赏
  • 举报
回复
比如在用户控件中有个Button名为Button1 写脚本时用它的ClientID属性 如: string sScript ="document.all."+ Button1.ClientID +".value "; ------说错了莫怪。
孟子E章 2006-12-25
  • 打赏
  • 举报
回复
控件ID.ClientID
WORLDNIC 2006-12-25
  • 打赏
  • 举报
回复
你是不是要用ASP.NET的控件,又要在客户端用JS代码?如果是,以下供你参考:

假如在WEBCONTROL或者aspx里,有个dropdownlist,id 为:ddlCounty
添加以下代码:
sub page_load(...)
if page.ispostback=false then
ddlCounty.Attributes.Add("onchange", "selectCounty(this.form." + ddlCounty.ClientID + ",this.form." + txtCounty.ClientID + ");") '选择区县
end if
end sub

ddlCounty.ClientID =页面上的ID(不论ddlCounty是在什么控件里,在webControl还是在其他的控件里)

在页面写个js函数:
function selectCounty(countyID,countyName){
.....
.....
}
孟子E章 2006-12-25
  • 打赏
  • 举报
回复
不用服务器控件的话,可以直接用你的id

<input id=x>
document.getElementById("x")
lazyfish 2006-12-25
  • 打赏
  • 举报
回复
clientid
yuemb369 2006-12-25
  • 打赏
  • 举报
回复
谢谢两位
yuemb369 2006-12-25
  • 打赏
  • 举报
回复
我只是想在客户端写 js 脚本,而不是在后台代码中组合,并且又很多控件我不会用服务器控件

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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