gpt4 book ai didi

c# - 如何使用 JavaScript 变量在 JavaScript 函数内获取 ASP.NET ClientID?

转载 作者:行者123 更新时间:2023-12-02 19:12:07 25 4
gpt4 key购买 nike

我希望能够在 JavaScript 函数内获取 ASP.NET 控件的 ClientID。我还希望能够传入一个包含控件名称的 var,以便不同的控件可以使用相同的功能。

例如,如果我想使用名为 Button1 的控件,则效果很好:

function doStuffToButton1Control()
{
var buttonControl = document.getElementById('<%= Button1.ClientID %>');
//do stuff with buttonControl
}

但是当我尝试使控件名称动态化时出现错误。我正在尝试将 ClientID 调用串在一起,如下所示:

function doStuffToGenericControl(controlName)
{
var dynamicControl = document.getElementById('<%= ' + controlName + '.ClientID %>');
//do stuff with dynamicContorl
}

我在创建字符串时尝试使用双引号或单引号,但错误始终是“字符串文字中的字符太多”或“字 rune 字中的字符太多”。控件存在并且名称正确通过(通过 alert(name) 测试)。

是否有更好的方法来解决这个问题,或者我是否遗漏了一些明显的东西?

谢谢!

更新:此功能将位于母版页上。任意数量的子页面都会调用它。例如,一个子页面可能有一个 ASP 控件,它的调用方式如下:

<asp:LinkButton ID="Button2" runat="server" OnClientClick="doStuffToGenericControl('Button2')">...</asp:LinkButton>

但是另一个页面可能有这个 ASP 控件也调用它:

    <asp:LinkButton ID="Button4" runat="server" OnClientClick="doStuffToGenericControl('Button4')">...</asp:LinkButton>

但是,这些控件的 ID 通常会在渲染时由 ASP.NET 更改,因此它们最终看起来像 MainContent_Button2而不仅仅是Button2 。为了解决这个问题,我传统上只是使用 <%= Button1.ClientID %> ,但由于我希望任意数量的控件都能够使用这一功能,所以我遇到了一些麻烦。

更新 2:我能够使用 this以及 getAttribute打电话来获取我需要的东西。 (显然,只有当您引用的控件是您正在单击的控件时,这才有效,但这正是我所需要的)就像这样:

function doStuffToGenericControl(controlName)
{
var controlID = controlName.getAttribute('id');
var control = document.getElementById(controlID);
//do stuff with control
}

最佳答案

'<%= Button1.ClientID %>'是在 asp.net 页面渲染上用控件 id 替换的内容,

但是当您在客户端传递变量时,您应该传递 id 并在没有任何 % scops 的情况下使用它

所以试试这个

function getGenericControl(control)
{
var dynamicControl = control;
alert(dynamicControl);
//do stuff with dynamicContorl
}

更新

您可以使用<%= ClientID %>为上述方法生成参数,因此只需像这样更改OnClientClicks并使用上面的方法即可

<asp:LinkButton ID="Button2" runat="server" OnClientClick="doStuffToGenericControl(this)">...</asp:LinkButton>

关于c# - 如何使用 JavaScript 变量在 JavaScript 函数内获取 ASP.NET ClientID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13592109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com