刚刚.Net相关知识技术互动平台(绿色天堂)
.Net知识技术交流、探讨、请教与共享(Visual Studio.Net、Asp.Net、VB/C#、.NetWindows应用程序、Windows服务、Socket通信、GIS、ArcGIS、JavaScript、Sql Server和Oracle等)
posts - 74,  comments - 474,  trackbacks - 38
这几天都在用Atlas做一个网站的Demo,遇到了一个自己不懂的问题。
请先看下面的用Atlas调用本地Web Services实现检查输入用户名是否在数据库中存在的代码:——暂且命名为“代码一”
 1<script language="javascript" type="text/javascript">
 2    function TestonClick()
 3    {
 4        var username = $("ctl00_CPHolder1_CreateUserWizard1_CreateUserStepContainer_UserName").value;
 5        AtlasService.TestUser(username,onTestUserComplete);
 6    }

 7    function onTestUserComplete(result)
 8    {
 9        if (result)
10            $("user_sidebarTR").innerHTML = "恭喜您,您可以使用此用户名,请继续……";
11        else
12            $("user_sidebarTR").innerHTML = "对不起,用户名已存在,请您更换……";
13    }

14</script>
再结合下面的代码(ASP.Net2.0工具箱登录选项卡中“CreateUserWizard”服务器控件中的一部分Html代码):——暂且命名为“代码二”
 1……
 2<tr>
 3                                <td align="right">
 4                                    <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">用户名:</asp:Label></td>
 5                                <td>
 6                                    <asp:TextBox ID="UserName" runat="server"></asp:TextBox>
 7                                    <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"
 8                                        ErrorMessage="必须填写“用户名”。" ToolTip="必须填写“用户名”。" ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
 9                                    <input id="Test" type="button" value="检验" onclick="return TestonClick()" />
10                                </td>
11                            </tr>
12……
(备注:现在的代码没有问题可以运行的很正常)
请看在“代码一”中的第4行
var username = $("ctl00_CPHolder1_CreateUserWizard1_CreateUserStepContainer_UserName").value;
。这段代码是想查找到在“代码二”中第6行的
<asp:TextBox ID="UserName" runat="server"></asp:TextBox>
TextBox服务器控件的值。如果我把“代码一”中的第4行改为
var username = $("UserName").value;
是错误的。因为程序运行后“代码二”中TextBox服务器控件的ID并不是编写时给的“ID="UserName"”而是“ID="ctl00_CPHolder1_CreateUserWizard1_CreateUserStepContainer_UserName"”,所以我想请问:如果我不直接像现在在“代码一”中第4行那样写出具体的服务器控件ID,我该如何取出服务器控件的ID呢?

转载本文说明(以下简称本说明):必须遵守《刚刚网络作品版权声明》,再转载。"本说明、作者、作者博客网址及作者博客坐落,本文中提及的各种说明、备注或附录性文字"必须被转载,且不得改变其原有内容和要表达的意图!
作者:刚刚   作者博客网址:http://lijigang.cnblogs.com/   作者博客坐落在博客园
把握现实生活,培养自身能力
掌握新型技术,提高自我力量

posted on 2006-10-21 13:18 刚刚 阅读(495) 评论(6)  编辑 收藏 所属分类: ASP.Net技术JavaScript技术综合各种技术

FeedBack:
2006-10-21 14:20 | Jeffrey Zhao      
在代码中写:
var c = document.getElementById("<%= this.XXXX.ClientID %>");
  回复  引用  查看    
2006-10-22 16:36 | Supper Cat [未注册用户]
很多情况会出现实际id与所给他id不同的问题,masterpage中也会出现这问题。。。
  回复  引用    
#3楼 [楼主]
2006-10-23 00:01 | 刚刚      
@Jeffrey Zhao
首先谢谢您的回答,这个当然是普通的服务器控件获取代码,但如果是微软自己在Asp.Net2.0中封装的控件,如:CreateUserWizard中的服务器控件“用户名”或“密码”的TextBox是如何在JavaScript获得的呢?
  回复  引用  查看    
2006-10-23 13:44 | cathsfz      
Control.ID是控件本身的ID值,在页面中一个特定范围内唯一,但不是整个页面内唯一。例如你用了GridView,使用了模板列,那么这个列里的控件ID都相同。

然而DOM里面的id是必须全页面唯一的,所以ASP.NET引入了Control.ClientID这个属性,这个属性将成为生成HTML时所使用的id,并且确保整个页面上每个ClientID都是唯一的。那么ClientID是如何做到确保唯一的呢?请参考MSDN中关于INamingContainer这个接口的说明。

说到这里你应该明白了,要获得一个控件生成HTML的id值,只需要获取其Control.ClientID属性。你可以选择<%=Control.ClientID%>这样丑陋的做法,也可以用Page.ClientScript.Register*的方法传递值到Script,随你喜欢。
  回复  引用  查看    
#5楼 [楼主]
2006-10-23 15:44 | 刚刚      
@cathsfz
谢谢,万分的感谢您,问题已经解决。关于这个问题我会研究一下并总结的。
就我所举的例子,其“代码一”中的第4行代码应改为:var username = $('<%= CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("UserName").ClientID %>').value。
再次万分感谢给我提供帮助的人:@cathsfz、@Jeffrey Zhao和@Supper Cat,谢谢你们!
  回复  引用  查看    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-09-29 12:04 编辑过


相关链接:
 
郑重声明:
本博客的所有内容均使用
{刚刚网络作品版权声明}
保护本博客网络作品版权
    非常欢迎您的到来!Asp.Net Ajax已经出台正式的第3.5版了,现将有关下载放在了本博客的置顶随笔中,有需要者请大家浏览此置顶随笔或者点击此处,因博客园上传附件大小和空间容量有限,刚刚(也就是本人)决定将最新版本放在CSDN资源上,望广大博友谅解。如果有人希望最新动态,请关注官方网站,网址请点击此处
本人其他博客:超越自我de博客刚刚.Net相关知识技术互动平台(粉色回忆)163博客百度博客

     ——刚刚 (公告)
正大光明! 8-23 16:03

<2006年10月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

与我联系

搜索

 

常用链接

留言簿(12)

我管理的小组

我参与的团队

随笔分类(79)

随笔档案(73)

文章分类(1)

文章档案(1)

收藏夹(152)

本人其他博客

园子里的优秀博客

最新随笔

积分与排名

  • 积分 - 103610
  • 排名 - 370

最新评论

阅读排行榜

评论排行榜