获取ASP站点上的参数的ClientID

时间:2010-07-19 14:51:45

标签: c# javascript asp.net html

我有一个方法的参数,应该是一个字符串,我不能想出如何<%* .ClientID%>像那样的变量。由于它是一个变量,我不能用引号括起来,因为它将按字面意思进行,当我像变量一样使用参数时(正如你应该的那样)我得到一个ASP错误,说它在上下文中不存在(从字面上读它。)

任何线索?

谢谢你们

代码示例

function next(currentControl, maxLength, nextControl) { 
   if (document.getElementById( currentControl<%=.ClientID %>).value.length >= maxLength) {
         document.getElementById( nextControl<%=.ClientID %>).focus(); 
   } 
   return false; 
} 

致电示例

wValCode.Attributes.Add("onkeyup","next('wValCode','3','wValThree')");

我知道可能是添加属性的原始方式,但它是如何向我解释的。我在飞行中拿起了ASP,所以不要太难我;)

静态HTML

<input name="ctl00$ContentPlaceHolder2$wValThree" type="text" id="ctl00_ContentPlaceHolder2_wValThree" style="width:33px;">

这是我在静态html中可以找到的唯一相关参考。它会被添加到一个ASP复杂的js文件中吗?

2 个答案:

答案 0 :(得分:1)

鉴于您正在从代码中绑定关键事件,您可以在执行绑定时引用客户端ID:

wValCode.Attributes.Add("onkeyup","next('" + wValCode.ClientID + "', '3', '" + wValThree.ClientID + "')");

然后,您已将客户端ID作为参数传递给javascript函数

function next(currentControl, maxLength, nextControl) { 
   if (document.getElementById(currentControl).value.length >= maxLength) {
         document.getElementById(nextControl).focus(); 
   } 
   return false; 
}

更好的选项是使用this关键字将对调用对象的引用作为第一个参数传递:

//code behind
wValCode.Attributes.Add("onkeyup","next(this, '3', '" + wValThree.ClientID + "')");

//javascript function
function next(currentControl, maxLength, nextControl) { 
   if (currentControl.value.length >= maxLength) {
         document.getElementById(nextControl).focus(); 
   } 
   return false; 
}

答案 1 :(得分:0)

尝试将点移动到ASP.NET标记之外:

currentControl.<%= ClientID %>