2011-01-31 35 views

回答

2

或者你可以在一个阵列注册客户端id和在JavaScript文件中使用此阵。

.aspx的(JS)

var pageControls = { 
    'myControlId1' : '<%= control1.ClientID %>', 
    'myControlId2' : '<%= control2.ClientID %>', 
    ... 
} 

的Javascript

alert(pageControls['myControlId2']); 
+0

@Russ:感谢您的纠正! :) – Marc 2011-01-31 21:44:35

2

据我所知,它必须在aspx本身。 我一直都在做的是把它作为一个参数。例如,

function doSometing(clientId){ 
... 
} 

从asp.net一个脚本块中:

doSomething(<%= control.ClientID %>); 
1

总之,服务器标签中的任何代码都必须通过ASP.NET处理管道,以便它可以写成输出。毕竟,<%= ... %>只是Response.Write(...)的简写。

所以,如果你可以得到一个外部脚本文件来通过处理管道,那么你可以有服务器标签。然而,更简单的方法是编写一个服务器端控件,该控件将JavaScript块发送到包含客户端ID和可用于传递服务器端ID,返回客户端ID的页面中。然后在你的外部脚本中使用这个函数。当然,在ASP.NET 4(或MVC)中,您可以更好地控制为客户端生成的ID,因此可以完全避免这种情况。

2

你也可以简单地注册的页面作为一个aspx页面,如重命名文件到MyFile.js.aspx

然后,只需添加<%页%>指令在顶部,你可以嵌入你提到的ID。

但是,这意味着JS不会被浏览器缓存(除非您自己专门添加缓存),并且由于服务器上需要解析,所以还有额外的开销。

相关问题