Javascript 使用jquery访问Asp.net控件(所有选项)

Javascript 使用jquery访问Asp.net控件(所有选项),javascript,c#,jquery,asp.net,Javascript,C#,Jquery,Asp.net,如何使用jquery访问asp.net控件 $(“#myTextBox”)不起作用。-推荐使用,看起来有点难看,但很有效 我在这里看到了一些问题,担心这些选择器的性能。这是最好的办法吗?没有 但是,大多数情况下,您甚至不会注意到性能受到的影响,当然,除非您的DOM树很大 选项3: <%@ Page Title="" Language="C#" MasterPageFile="~/Members/Site.Master" AutoEventWireup="true" CodeBehind=

如何使用jquery访问asp.net控件

$(“#myTextBox”)
不起作用。

-推荐使用,看起来有点难看,但很有效

我在这里看到了一些问题,担心这些选择器的性能。这是最好的办法吗?没有

但是,大多数情况下,您甚至不会注意到性能受到的影响,当然,除非您的DOM树很大

选项3:

<%@ Page Title="" Language="C#" MasterPageFile="~/Members/Site.Master" AutoEventWireup="true" CodeBehind="Calculator.aspx.cs" 
Inherits="store.Members.Calculator" 
ClientIDMode="Static"
%>
强烈建议使用
CssClass
。因为使用类的选择器是干净和简单的

如果您想知道,.net控件的
CssClass
与传统html控件的
class
相同

<asp:TextBox runat="server" ID="myTextBox" CssClass="myclass" /> //add CssClass

$('.myclass') //selector
注:
根据我的经验,我见过丑陋的选择器,如
$(“#ctl00_Main_myTextBox”)
。这是直接复制粘贴从页面呈现的ID并在脚本中使用它的结果。听着,这会有用的。但是想想如果控制ID或主ID发生变化会发生什么。显然,您必须重新访问这些ID并再次更改它们。除此之外,请使用上面的选项之一并进行讨论。

除了答案,您还可以使用名称属性,当IIS在HTML中呈现名称属性时,指定的名称属性值应与ID值相同:

示例

<asp:TextBox ID="txtSalesInvoiceDate" runat="server" />

var invDate = $("input[name=txtSalesInvoiceDate]");

var invDate=$(“输入[name=txtSalesInvoiceDate]”);

除了@krishna给出的答案外,您还可以使用ASP.NET 4.0中的
ClientIDMode=“Static”
在页面级和网站级控制web控件客户端ID的生成

在页面级别,如下所示:

<%@ Page Title="" Language="C#" MasterPageFile="~/Members/Site.Master" AutoEventWireup="true" CodeBehind="Calculator.aspx.cs" 
Inherits="store.Members.Calculator" 
ClientIDMode="Static"
%>

在网站级别

您可以使用web.config设置,如下所示

 <system.web>
    <pages ClientIDMode="Static">
    </pages>

   ...
 </system.web>

...

在过去几天的问题回顾中,我看到了许多类似的问题。有足够的信息,但我决定写一个全面的清单在这里。希望这有帮助。简单的问题:如果在usercontrol中的控件中执行此操作,并且在页面上添加两次此usercontrol,选项4会发生什么情况。是否在运行时进行了某种验证,或者只是在生成的HTML中导致id重复?@Bartdude-它会在生成的HTML中导致重复
ClientIDMode
只保留现有ID,因此在区分单击哪个ID时必须小心。在这种情况下,使用类和/或数据属性选择器可能是一个不错的选择。谢谢!正是我所想的。我想你不可能拥有全部:安全性和灵活性。根据JQuery文档,为了语法正确,实际的ID应该在引号中$(“[id$='myTextBox']”)$(“[id*='myTextBox']”)
<%@ Page Title="" Language="C#" MasterPageFile="~/Members/Site.Master" AutoEventWireup="true" CodeBehind="Calculator.aspx.cs" 
Inherits="store.Members.Calculator" 
ClientIDMode="Static"
%>
 <system.web>
    <pages ClientIDMode="Static">
    </pages>

   ...
 </system.web>