在ASP.NET页面加载时运行JavaScript代码

时间:2010-05-26 05:31:37

标签: c# .net asp.net javascript

我有一个radiobox <asp:RadioButtonList CssClass="list" Style="width: 150px" ID="rdo_RSD_ExcerciseRoT" runat="server" Font-Bold="false" RepeatDirection="Horizontal" RepeatLayout="Table" TextAlign="Left" > <asp:ListItem Text="Yes" onclick="en();" Value="Y"></asp:ListItem> <asp:ListItem Text="No" onclick="dis();" Value="N" Selected="True"></asp:ListItem> </asp:RadioButtonList>

如您所见,默认情况下会选择第二个列表项。但问题是,当我的页面加载时dis()没有被调用。我也希望在页面加载时运行dis()

我试过谷歌,一些博客建议使用 Page.RegisterStartupScript Method 。但我不知道问题是什么,为什么我们应该使用上面提到的方法。如果有人请告诉我为什么没有调用此函数以及如何调用它,我将不胜感激。

修改:如果有帮助,我也会提供Javascript代码。

    <script type="text/javascript">
    function dis()
    {
        ValidatorEnable(document.getElementById('<%=RequiredFieldValidator32.ClientID%>'), false);
    }

    function en()
    {
        ValidatorEnable(document.getElementById('<%=RequiredFieldValidator32.ClientID%>'), true);
    }


</script>

5 个答案:

答案 0 :(得分:1)

默认情况下,默认列表项为SET。他们没有在页面加载时点击以选择它们。所以这就是没有调用为OnClick定义的函数的原因。

你要么包含一个脚本 - 标记你调用dis(),或者你可以使用RegisterStartupScript。

脚本标记如下所示:

<script type="text/javascript">
  dis();
</script>

并且必须包含在页面的html源代码中。

RegisterScriptControl在内部执行此操作。它还可以选择收集多个启动脚本调用,并将它们呈现在一个脚本标记中。

答案 1 :(得分:1)

dis()已分配给onclick - 这意味着只有在用户点击列表项时才会调用它。如果您愿意,可以从dis()的{​​{1}}致电onload

答案 2 :(得分:0)

如果要在页面加载时在服务器端执行C#代码,请覆盖

 protected void Page_Load(object sender, EventArgs e)

如果您想在页面加载时执行JavaScript,请在​​"<body>"标记中使用“onLoad”。像

<body onload="dis();">

希望它有所帮助。

答案 3 :(得分:0)

<body onload="dis()">

</body>

进行。

答案 4 :(得分:0)

您需要在页面加载时运行脚本,因为还没有人点击您的列表项。 您应该使用Page.RegisterStartupScript vs <body onload="...">执行此操作有三个原因:

  1. Asp.net可能希望将正常的<body onload="...">脚本用于其他内容。
  2. 您可以控制是否希望脚本也在回发上运行
  3. RegisterStartupScript可以保护您免受命名冲突(例如,您使用的自定义控件也希望在启动时运行具有相同名称的脚本)以及意外地将脚本设置为多次运行。