【问题标题】:can not hook up asp server side control for javascript function无法为 javascript 函数连接 asp 服务器端控件
【发布时间】:2012-01-26 02:56:57
【问题描述】:

环境:.NET 2.0,Visual Studio 2005

在 aspx 标记中,设置如下控件:

<asp:CheckBox ID="E287" runat="server"  />

在后面的代码中,将事件与 Page_Load 事件中的 javascript 函数挂钩,例如:

Me.E287.Attributes.Add("OnCheckedChanged", "javascript:alert(123);")

然后在浏览器中测试页面,然后单击复选框,没有响应。检查来源,它是:

<span OnCheckedChanged="javascript:alert();"><input id="E287" type="checkbox" name="E287" /></span>

无法理解。

如果更改 aspx 标记,如:

<asp:CheckBox ID="E287" runat="server" OnCheckedChanged="javascript:alert(123);" />

会报错

BC30456:“javascript”不是“ASP.MyPage_aspx”的成员。

真的很困惑。如何解决这个问题?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    当您看到呈现的控件时,javascript 转到 span(标签),要将其添加到输入/复选框,您需要使用 InputAttributes。同样在客户端,您需要使用onchangeonclick 来获得您想要的结果。

    E287.InputAttributes
    

    原来如此

    Me.E287.InputAttributes.Add("onchange", "javascript:alert('123');")
    

    那是因为复选框使用 2 个控件来呈现,一个跨度和一个输入,因此使用您的代码添加脚本文本而不是复选框。 还有LabelAttributes。这里的属性是去跨度的,因为跨度是输入的父级。

     E287.LabelAttributes
    

    【讨论】:

      【解决方案2】:

      使用您的代码隐藏中的此代码:

      Me.E287.Attributes.Add("OnCheckedChanged", "javascript:alert(123);")
      

      OnCheckedChanged 不是复选框的客户端 (JavaScript) 事件。您需要将其更改为onclick。这可以解释为什么这个事件处理程序没有触发。

      用你的第二行代码连接一个事件:

      <asp:CheckBox ID="E287" runat="server" OnCheckedChanged="javascript:alert(123);" />
      

      您正在尝试为正在检查的复选框分配一个服务器端事件处理程序到您的代码隐藏中名为“javascript:alert(123)”的方法...该方法不存在。

      我建议您将首次连接事件的尝试(使用 Attributes.Add)改为使用 onclick 事件:

      Me.E287.Attributes.Add("onclick", "javascript:alert(123);")
      

      我希望这会有所帮助!

      【讨论】:

        【解决方案3】:

        如果您尝试从服务器端向客户端添加 javascript 事件处理程序,请尝试以下操作:

        Me.E287.Attributes.Add("onclick", "alert(123);")
        

        另一方面,如果您尝试添加服务器端事件处理程序,它应该如下所示:

        AddHandler E287.CheckedChanged, AddressOf E287_CheckedChanged
        

        当然你必须实现E287_CheckedChanged事件处理方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-07-07
          • 1970-01-01
          • 1970-01-01
          • 2020-06-26
          • 2012-10-15
          相关资源
          最近更新 更多