【问题标题】:adding onclick event to button causes error in page将 onclick 事件添加到按钮会导致页面错误
【发布时间】:2012-07-12 21:17:17
【问题描述】:

下面是我的 asp.net 应用程序中一个按钮的 html 代码,它使用 vb 作为其服务器端语言。该按钮在服务器端处理,其中的代码也在下面列出。我的问题是当我添加一个 onclick 事件时(我想在同一页面或父页面中调用 javascript 函数,因为此页面仅显示在我们应用程序的 iframe 中,从不独立)。

目前,这是按钮的 html

<asp:button class="smalltextbutton" id="Button1" runat="server" Text="Save"></asp:button>

当更改为以下内容时,我在启动页面时收到错误消息:“编译器错误消息:BC30456:'refreshParentTree' 不是 'ASP.tasks_modifytask_aspx' 的成员。 "

<asp:button class="smalltextbutton" id="Button1" OnClick="refreshParentTree()" runat="server" Text="Save"></asp:button>

现在javascript函数非常基本,在表单之外,它看起来是这样的。

<script language="javascript">
 function refreshParentTree(){
        alert('refresh parent tree hit');
        }
</script>

在服务器端,这是我处理按钮单击 (vb) 的代码

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'DEBUG: 
    If Trace.IsEnabled Then cGK_testSpot.Text += "<div style='border: solid thin orange;'>Button1_Click() STARTING<br>"
    'DEBUG: 
    If Trace.IsEnabled Then cGK_testSpot.Text += "<div style='border: solid thin green;'>printArrayList (delete ALL EXCEPT this list from P2_CustomFields_Detail): " + CustomFieldsLibrary.printArrayList(arlist_dynCompnts) + "</div>"

    If Page.IsValid Then
        CustomFieldsLibrary.deleteAllDynamicFieldsExceptThisList(lnCurrent, 13, -1, arlist_dynCompnts, (New SqlConnection((New ConnInfo).GetConnString)), True)
        UpdateDatabase()
        If Not Trace.IsEnabled Then Server.Transfer("viewTask.aspx?taskgrpid=" & lnCurrent & "&taskgrpcategory=13&ptaskgrpid=" & Request.QueryString("ptaskgrpid") & "&ptaskgrpcategory=" & Request.QueryString("ptaskgrpcategory") & "&refresh=true")
    Else
        populateDropDowns()
    End If

    If Trace.IsEnabled Then cGK_testSpot.Text += "<div style='border: solid thin green;'>printArrayList: " + CustomFieldsLibrary.printArrayList(arlist_dynCompnts) + "</div>"
    'DEBUG: 
    If Trace.IsEnabled Then cGK_testSpot.Text += "<br>Button1_Click() ENDED</div>"
End Sub

所以基本上,我正在寻找这里做错了什么,为什么页面会给我错误,一旦这些问题得到解决,我将需要 onclick 在同一页面上调用一个 javascript 函数,然后将调用父级,或直接调用父级。感谢您的帮助。

【问题讨论】:

    标签: javascript asp.net html vb.net


    【解决方案1】:

    Use OnClientClick 而不是OnClick

    &lt;asp:button&gt; 是一个服务器端元素,因此它有自己的 ASP.NET 特定的服务器端属性,这些属性在服务器端进行处理。所以OnClick 并不是你认为的常规 HTML 元素的样子。编译器正在服务器上查找该代码,但它不存在。

    另一方面,

    OnClientClick 仅被视为字符串,编译器不会对其进行评估。 (除了在输出中发出onclick HTML 属性。)它假定会有客户端代码来处理它。

    【讨论】:

    • 谢谢。这行得通。几分钟后,当它允许我接受答案时,我会确保接受。
    【解决方案2】:

    尝试将 OnClick 更改为 onclick(小写字母)。由于标签有一个 runat="server" 属性,它是一个服务器控件,然后 OnClick 将引用一个必须在代码隐藏中定义的服务器端事件。

    【讨论】:

    • 小写或大写无关紧要,onclientclick 解决了这个问题,因为大卫回答了但感谢您的帮助和时间。
    猜你喜欢
    • 2021-11-11
    • 2011-10-20
    • 2011-12-21
    • 2020-06-08
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    相关资源
    最近更新 更多