在每个对象上设置ClientIDMode = Static是否有任何缺点(在主页的maincontent上设置)

Sar*_*nyu 28 asp.net jquery client-side

我正在开发asp.net项目,每次我需要使用jquery标识符$(#"objectID").我必须将每个对象上的ClientIDMode更改为静态.由于我注意到默认客户端ID模式是Inherit所以我将MainContent Client ID模式设置为静态,并且我发现所有对象都变为静态.

这肯定会在使用jquery时节省大量时间,但我只是想知道这有什么缺点,并且有没有理由为什么ClientIDMode首先不应该设置为静态?

Gra*_*ark 18

您需要注意将ClientIDMode设置为静态以用于用户控件之类的操作,或者您最终可能会使用具有相同ID的多个元素.

对于像GridView这样的数据绑定控件,您还需要使用ClientIDRowSuffix属性以确保区分每一行.

这篇文章有一些很好的例子.


小智 6

在 JavaScript 中处理 ID 的另一种方法是执行如下操作:

var something = '<%= btnId.ClientID %>';
Run Code Online (Sandbox Code Playgroud)

示例:如果您有一个如下所示的按钮控件:

<asp:Button ID="btnId" runat="server"></asp:Button>    
Run Code Online (Sandbox Code Playgroud)

ID 被转换为id="ct100_ContentPlaceHolder1_btnId"然后您可以使用变量something来访问控件。