C# 在javascript中引用ASP.NET web控件

C# 在javascript中引用ASP.NET web控件,c#,javascript,.net,asp.net,drop-down-menu,C#,Javascript,.net,Asp.net,Drop Down Menu,我已经在我的用户控件中创建了一个下拉列表,请参见下面的源代码 <asp:DropDownList ID="ddlInd" runat="server" DataSourceID="indXmlDS" DataTextField="text" DataValueField="text"></asp:DropDownList> 尝试将控件的ClientIdMode设置为可预测: <asp:DropDownList ID="ddlInd" ClientIDMode="P

我已经在我的用户控件中创建了一个下拉列表,请参见下面的源代码

<asp:DropDownList ID="ddlInd" runat="server" DataSourceID="indXmlDS" DataTextField="text" DataValueField="text"></asp:DropDownList>

尝试将控件的ClientIdMode设置为可预测:

<asp:DropDownList ID="ddlInd" ClientIDMode="Predictable" runat="server" DataSourceID="indXmlDS" DataTextField="text" DataValueField="text"></asp:DropDownList>

您可以使用它将控件引用到.js文件

$'selectddlInd'.val

如果dropdownlist位于ContentPlaceholder中,则可以执行此操作

$'SelectContentPlaceholder ID_ddlInd'。val

将其放在.js文件中

注意:当然要包括.js文件,请尝试使用而不是RegisterStartupScript

在您的例子中,似乎包含了一个外部javascript文件,而不是直接出现在页面中的javascript代码

还可以尝试将document.getElementById中的双引号更改为单引号


编辑哦,我看到你正试图在你的javascript文件中进行编辑。这不会在外部js文件中解释!您应该直接将函数包含在页面中,而不是作为外部文件,或者尝试将ColControlID作为参数传递给js函数

如果您无法使用.NET 4.0,并且无法使用3.5/2.0,我编写了一个名为Awesome.ClientID的小库来解决此问题

我以前在这个答案中发布过:

基本上,它将允许您将所有控件序列化为JSON数组,并且您可以将JavaScript更改为:

document.getElementById(controls.ddlInd);
可在以下位置找到该库:


关于它的博客帖子:

当你在.aspx页面上有脚本时,你可以使用。如果你使用外部文件,那么你必须使用控件id将无法工作。

是ddlInd.ClientID返回null还是getElementById?@paolo我认为它的document.getElementById返回null。你在哪里以及如何尝试document.getElementById,作为showTextbox的参数?查看Usercontrol中ddlInd和TextBox所在的相关部分也会有所帮助。showTextbox不也需要文本框的ID吗?如果您对页面加载中的所有操作都进行了注释,该怎么办?仍然返回空值?@Tim js函数showTextbox位于myJS.js文件中,该文件存储在Scripts文件夹下,您可以从Page_Load事件中编写的代码中看到。运气不好。当我调用alertdocument时,仍然给我空值。getElementById@woodykiddy:当您调用:alert?当clientdmode=Static时也没有运气不确定我的代码有什么问题:如果我发出警报,它只会显示一个字符串@woodykiddy:Woops,您需要单引号。顺便说一句,您可能也应该在document.getElementById中这样做……显然,这将假定OP可以访问jQuery。现在这似乎是一个javascript错误。您确定javascript文件的路径正确吗?您应该尝试使用~/Scripts/myJS.js作为js文件的路径。从用户控件内部看,到js的相对路径很棘手,因为到js的路径是相对于包含控件的页面的,而不是相对于用户控件本身的。
function showTextbox(objID) {
    var s = document.getElementById(objID);
    var div = document.getElementById("myDiv");
    if (s.options[s.selectedIndex].value == "Other") {
         div.style.display = "inline";
     }
     else {
         div.style.display = "none";
     }
}
<asp:DropDownList ID="ddlInd" ClientIDMode="Predictable" runat="server" DataSourceID="indXmlDS" DataTextField="text" DataValueField="text"></asp:DropDownList>
document.getElementById("ddlInd");
document.getElementById(controls.ddlInd);