我的.aspx页面中有这个代码:
$("#city, #<%=tbSiteSearch.ClientID%>").on('keydown', function (e) {
正如您所看到的,我正在动态地注入服务器端控件的clientid。
现在,当我将此代码行移动到外部.js文件时,我不再具有ASP.NET标记的可用性。
如何将代码移动到外部.js文件,同时仍然能够动态地在该服务器控件上添加触发器?请提供有关如何操作的代码示例:)
答案 0 :(得分:2)
一种简单的方法是包含&lt;%= tbSiteSearch.ClientID%&gt;在您的HTML中(在隐藏的容器中)。
<div id="myvalue" class="hidden"> <%=tbSiteSearch.ClientID%> </div>
然后任何js文件都可以使用此值:
var id = $("#myvalue").text();
$("#city, #"+id).on('keydown', function (e) {
答案 1 :(得分:1)
你可以在ASPX中使用这样的东西:
<script>
var tb=<%=tbSiteSearch.ClientID%>;
</script>
然后在你的JS文件中使用它:
$("#city, #"+tb).on('keydown', function (e) {
答案 2 :(得分:0)
IIS上的ASP.NET处理对某些类型文件的请求。您可以通过打开Internet信息服务(IIS)管理器,选择您的站点并打开“处理程序映射”来查看此列表,您将看到该ASP。 NET(和其他)列出其各自的文件扩展名。 如果要添加要由ASP.NET处理的javascript,则需要添加具有以下值的脚本映射:
请求路径:* .js 可执行文件:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_isapi.dll 名称:Javascript ASP Handler
我真的不会推荐这种方法,因为ASP.NET会为最小的好处做更多的工作。
为元素分配ID或类并根据它进行选择会更好。