【问题标题】:Run JavaScript code at ASP.NET page load在 ASP.NET 页面加载时运行 JavaScript 代码
【发布时间】:2010-05-26 05:31:36
【问题描述】:

我有一个单选框<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()

我试过google,有些博客建议使用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>

【问题讨论】:

  • 你的“dis()”是一段C#代码还是一段JavaScript代码?
  • @Sefler 它是 Javascript 代码。您可能会看到编辑
  • 这是一个javascript问题,还是一个ASP问题?
  • @misterMatt 我完全不知道。我猜两者兼而有之。

标签: c# .net asp.net javascript


【解决方案1】:

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

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

脚本标签如下所示:

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

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

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

【讨论】:

  • “你可以包含一个脚本 - 你调用 dis() 的标签”是什么意思?RegisterStartupScript 的功能到底是什么。
【解决方案2】:

dis() 分配给onclick - 这意味着只有当用户单击列表项时才会调用它。如果需要,您可以从&lt;body&gt;onload 拨打dis()

【讨论】:

  • @Sebastian 我猜你是想把这个评论放在你的帖子上
【解决方案3】:

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

 protected void Page_Load(object sender, EventArgs e)

如果您想在页面加载时执行 JavaScript,请在​​ "&lt;body&gt;" 标记中使用“onLoad”。喜欢

<body onload="dis();">

希望对你有帮助。

【讨论】:

  • 我正在使用母版页。所以我认为 Body Tag 会在母版页中。那么我如何才能为这个特定的 .aspx 页面编写“onLoad”
  • @vaibhav 我认为您可以使用
【解决方案4】:
<body onload="dis()">

</body>

完成。

【讨论】:

    【解决方案5】:

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

    1. Asp.net 可能想要使用普通的&lt;body onload="..."&gt; 脚本来做其他事情。
    2. 您可以控制是否要在回发时也运行脚本
    3. RegisterStartupScript 可以保护您免受命名冲突(例如,您使用的自定义控件也希望在启动时运行同名脚本)和意外将脚本设置为多次运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 2017-05-21
      • 2016-08-18
      相关资源
      最近更新 更多