【问题标题】:User control - calling a vb linkbutton's(within a user control) click event from javascript用户控件 - 从 javascript 调用 vb 链接按钮的(在用户控件内)单击事件
【发布时间】:2025-11-21 23:15:01
【问题描述】:

如何从 usercontrol.ascx 中 clickhandler(e) 中的 javascript 函数调用 VB 函数 - usercontrol.ascx.vb 中的 deleteevent()调用应该会导致回发,因为我需要用户控件来显示更改。

我目前正在尝试通过使用样式为 display:none 的链接按钮并从 javascript 函数调用其单击事件来实现。但我不知道如何调用点击事件。

我必须从 javascript 向 vb 函数传递一个值,但我正在使用隐藏字段来处理它。

环境为asp.net 3.0语言:vb

谢谢。

【问题讨论】:

    标签: asp.net javascript vb.net visual-studio-2008 user-controls


    【解决方案1】:

    查看这两个关于使用 JQuery 调用代码隐藏方法的链接:

    Using jQuery to directly call ASP.NET AJAX page methods

    Using jQuery to Call ASP.NET AJAX Page Methods

    你应该调用 aspx 而不是 ascx 方法。因为在运行时所有用户控件 (ascx) 合并到您的页面 (aspx)。

    如果您在一个页面中有一个包含多个实例的用户控件,您应该使用一个参数来定义每个用户控件中的方法的上下文。可能是用户控件的clientID。

    【讨论】:

      【解决方案2】:

      这个有点棘手,但很有趣。

      基本上,您需要:

      1. 在要引发事件的控件上实现 IPostBackEventHandler
      2. 为控件创建回发引用
      3. 通过超链接或 jscript 调用回发引用
      4. 在后面的代码中,处理回发引用并调用你的代码

        Public Class MyControl
        Inherits UserControl
        Implements IPostBackEventHandler
        
        Public Sub RaisePostBackEvent(ByVal eventArgument As String) Implements System.Web.UI.IPostBackEventHandler.RaisePostBackEvent
        
            ' Call deleteEvent here
            DeleteEvent(eventArgument)  ' This will contain "SomeArgumentYouWantToPassToDeleteEvent"
        
        End Sub
        
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim cs As ClientScriptManager = Page.ClientScript
        
            Dim a As New HtmlAnchor()
            a.ID = "myanchor1"
            a.InnerText = "Delete Event"
            a.HRef = cs.GetPostBackClientHyperlink(Me, "SomeArgumentYouWantToPassToDeleteEvent")
        
            ' You could alternatively construct some jscript and output it.
        
            Controls.Add(a)
        
        End Sub
        End Class
        

      有关更多信息,请参阅此处:ClientScriptManager.GetPostBackEventReference

      【讨论】: