主页:
<%@ Register TagPrefix="A" TagName="AA" Src="~/UserControls/ab.ascx" %>
<A:AA id="a1" runtat="server" />
<asp:Button ID="btn" Visible="true" runat="Server" OnClick="Btn_Click" OnClientClick="javascript:PreLoad();" />
<script type="text/javascript">
function PreLoad() {
var empty = '<%= (a1.FindControl("ddl")).ClientID %>';
// the above line giving error as 'ddl is inaccessible due to its protection level'
}
</script>
用户控制页面中的:
<%@ ControlLanguage="C#" AutoEventWireup="true" CodeBehind="ab.ascx.cs" inherits="ab.ascx.designer.cs" %>
<asp:DropDownList ID="ddl" runat="server"> </asp:DropDownList>
ab.ascx.designer.cs中
protected global::System.Web.UI.WebControls.DropDownList ddl;
有人请解释一下干净简单的正确方法来访问'PreLoad()'中的'ddl' javascript函数?
答案 0 :(得分:1)
将您的标记更改为:
<asp:DropDownList ID="ddl" runat="server" ClientIDMode="static"> </asp:DropDownList>
这意味着使用您指定的确切ID呈现控件。 然后更改您的javascript以使用控件的确切ID并通过以下方式访问它:
document.getElementById("ddl");
或者使用jQuery:
$("#ddl");
理想情况下,您应该将此javascript代码移动到外部文件中。