缺少 Javascript。 1 个主页和 2 个用户控件

Missing Javascript. 1 Main Page with 2 User Control

我有一个关于 ASP.net 用户控制的问题

举个例子,我有一个主页,里面有两个用户控件。

页面包含

主页:Survey.aspx

用户控件 1 : RadioButton.ascx

用户控件2:CheckBox.ascx

在两个用户控件中,我添加了一个特定的 Javascript 来协助两个 CSS 功能。

问题是,当我 运行 调查页面时,假设我首先加载 RadioButton,然后加载 Checkbox。在复选框中添加的 javascript 不会在浏览器中加载。 RadioButton 仅 Javascript。当首先加载 Checkbox 然后再加载 RadioButton 时,反之亦然。

当我在源页面中检查 Survey.aspx 时,第二个加载的用户控件中的 Javascript 似乎未在该页面中注册。我还尝试在主页中加载 Javascript 全部,但没有成功。无法调用每个用户控件中的特定函数

用户控件通过 ASP.NET

的转发器事件绑定

如果您有任何想法,请告诉我。提前致谢。

在Survey.aspx

 <asp:Repeater runat="server" ID="rptQuestion">
   <ItemTemplate>
     <uc:CheckBox ID="ucCheckBox" runat="server" Visible="False">
     <uc:RadioButton ID="ucRadioButton" runat="server" Visible="False">
   </ItemTemplate>
 </asp:Repeater>

在ucCheckBox.ascx

<script type="text/javascript">
function checkchange(){
--some function---
}
</script>

在ucRadioButton.ascx

<script type="text/javascript">
function radChange(){
--some function--
}
</script>

所以如果我先加载复选框

在浏览器的源文件中,复选框中只存在 javascript,单选按钮用户控件中没有 javascript

这里有多个问题:

  1. 如果您将控件设置为 Visible="False",则它们根本不会被渲染 - 因此该控件也不会 javascript。
  2. 如果您将 javascript 放在 .ascx 中,它将为该控件的每个实例呈现。因此,您的页面中将有多个 radChange()checkchange() 函数声明 - 每个都覆盖最后一个。我猜这不是你想要的。

当然你可以把你的 javascript 直接放在 aspx-markup 中,这会起作用。