C# 查找动态创建的控件的客户端ID?
如何找到动态创建的控件的客户端ID 在我的ascx中,我有以下代码片段C# 查找动态创建的控件的客户端ID?,c#,asp.net,clientid,C#,Asp.net,Clientid,如何找到动态创建的控件的客户端ID 在我的ascx中,我有以下代码片段 function DoSomething() { var loneStar= $find("<%= loneStar.ClientID %>"); loneStar.hide(); } 问题是呈现页面中的ClientID显示为空 我错过了什么? Html输出: <span>Labelll</span> <script type="te
function DoSomething() {
var loneStar= $find("<%= loneStar.ClientID %>");
loneStar.hide();
}
问题是呈现页面中的ClientID显示为空
我错过了什么?
Html输出:
<span>Labelll</span>
<script type="text/javascript">
var txtUsernameID = 'ctl02';
标签
变量txtUsernameID='ctl02';
您需要给控件一个ID,否则不会生成ID属性。对您的c#进行如下更改:
protected Label loneStar = new Label { ID = "loneStar", Text = "Raspeberry", ForeColor = System.Drawing.Color.DarkGray};
我并不是故意刁难你,但是你读过这个问题了吗?OP显然已经有了那个片段。好吧,但我只是尝试了OP所做的,我可以得到动态添加的Label的clientID。您可能已经为元素显式设置了ID,而OP没有。@adt:请看我对Ender答案的评论-将动态生成
clientID
,但它不会作为ID
属性存在于DOM元素中,因此$find()
将不起作用。公平地说,我再次检查了html,是的,它在服务器端生成了和ID,但span没有ID属性。+1 Ender。虽然
将呈现控件生成的ID
,但实际呈现的
将不会有ID
属性,除非明确指定了一个属性。是的,实际上Town是正确的。生成的clientID只是指定的ID,而不是我所期望的,比如ctl_xxx。有没有办法做到这一点?看看NamingContainer:。命名容器继承权是创建您引用的ID的基础。但是,如果您正在动态创建控件,.NET将由您来确保它们是唯一的。希望有帮助。
<asp:Panel runat="server" ID="pnl"></asp:Panel>
<script type="text/javascript">
var txtUsernameID = '<%= myLabel.ClientID %>';
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AddedControl();
}
protected Label myLabel = new Label();
void AddedControl()
{
myLabel.Text = "Labelll";
this.pnl.Controls.Add(myLabel);
}
}
<span>Labelll</span>
<script type="text/javascript">
var txtUsernameID = 'ctl02';
protected Label loneStar = new Label { ID = "loneStar", Text = "Raspeberry", ForeColor = System.Drawing.Color.DarkGray};