1

下面是我的代码:

默认.aspx:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" 
    AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
    Inherits="TestAjax._Default" %>    

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">

    //I set an onClick event on this button:

    < input type = "button" id="btnCl" onclick = "doJob" />

</asp:Content>

默认.aspx.cs:

protected void Page_Load(object sender, EventArgs e)
{
    //fires on page load;
}

void doJob()
{
    //code here;
}

问题是:

为什么没有触发 onclick 事件?(在 default.aspx btnCL 上)

谢谢

4

3 回答 3

1

您需要使用这样的asp:Button控件:

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />

然后有这样的事件方法:

protected void Button1_Click(object sender, EventArgs e)
{
    // your code here
}

当使用常规input标记时,onclick对于 javascript,您必须改为使用 ASP.NET 控件asp:Button才能连接 C# 方法。

于 2013-04-17T15:30:24.230 回答
1

正如我在 OP 中的评论中所述,您当前的方法是进行客户端调用(因此寻找一个名为 的 JavaScript 函数doJob。您需要进行服务器端调用,因此需要使用<asp:Button>控件。一些示例说明如何实现:

网页 (.aspx)

<asp:Button ID="btnDoJob" Runat="server" Text="Do Job" OnClick="btnDoJob_Click" />

代码隐藏 (.CS)

protected void btnDoJob_Click(object sender, EventArgs e)
{
    // Do your action here...
}
于 2013-04-17T15:32:27.570 回答
0

因为dojob()是服务器端函数,但onclick在该input元素上是客户端事件。您可能会在 JavaScript 控制台中收到错误消息,指出这dojob()是一个未定义的函数。

使用 anasp:Button而不是 aninput来利用服务器端点击事件。另外,dojob()应该是protected。通过不声明保护级别,我认为默认设置是private页面控件甚至可能看不到它。它应该与按钮单击的事件处理程序匹配:

protected void dojob(Object sender, EventArgs e)
{

}
于 2013-04-17T15:28:21.090 回答