我在ASP中有一个jQuery函数,试图获取其客户端ID。当它呈现HTML时,我得到了这个结果。

[HTML渲染]

$("")//ctl00_Content_gvProgramList
                    .tablesorter({ widthFixed: true, widgets: ['zebra'],
                        widgetOptions: {
                            zebra: ["even", "odd"]
                        }
                    })
                    .tablesorterFilter({ filterContainer: $("#filter-box"),
                        filterClearContainer: $("#filter-clear-button"),
                        filterColumns: [0, 1, 2, 3],
                        filterCaseSensitive: false
                    })
                    .tablesorterPager({ container: $("#pager") });


[隐藏代码]

        $("<%# gvProgramList.ClientID %>")//ctl00_Content_gvProgramList
                .tablesorter({ widthFixed: true, widgets: ['zebra'],
                    widgetOptions: {
                        zebra: ["even", "odd"]
                    }
                })
                .tablesorterFilter({ filterContainer: $("#filter-box"),
                    filterClearContainer: $("#filter-clear-button"),
                    filterColumns: [0, 1, 2, 3],
                    filterCaseSensitive: false
                })
                .tablesorterPager({ container: $("#pager") });


如果我使用ct100_Content_gvProgramList,所有的javascript作品都应该如此,所以请不要发布任何与此相关的答案。我想要一个有关如何使ClientID正确显示的答案。



更新

我想使用$('#<%= gvProgramList.ClientID %>'),但出现错误。

The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).

Line 16:         Head.Controls.Add(Header())
Line 17:         Head.Controls.Add(Menu())
Line 18:         Foot.Controls.Add(Footer())

最佳答案

采用:

<%= ... %>


代替:

<%# ... %>


所以:

$('#<%= gvProgramList.ClientID %>') ...




更新后

由于您要尝试在Response.Write()<%= ... %>)中隐藏/隐藏代码,因此在aspnet背后的代码中正在构建/修改控件集合。尝试使用类名代替控件的id

要么:

<script> ... </script>包裹在<asp:placeholder>中。这将使脚本成为占位符的子级,而不是导致错误的服务器端控件。

关于jquery - 为什么没有显示ClientID?怎么修,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10903973/

10-12 03:20