以下是我的代码:
的Default.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>
default.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
//fires on page load;
}
void doJob()
{
//code here;
}
问题是:
为什么onclick事件没有触发? (在default.aspx btnCL上)
由于
答案 0 :(得分: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#方法。
答案 1 :(得分:1)
正如我在OP中的评论中所述,您当前的方法正在进行客户端调用(因此正在寻找名为doJob
的JavaScript函数。您需要进行服务器端调用,因此需要使用{{ 1}}控制。如何实现这一目标的一些例子:
网页(.aspx)
<asp:Button>
代码隐藏(.CS)
<asp:Button ID="btnDoJob" Runat="server" Text="Do Job" OnClick="btnDoJob_Click" />
答案 2 :(得分:0)
因为dojob()
是服务器端函数,但onclick
元素上的input
是客户端事件。您可能在JavaScript控制台中收到错误消息,指出dojob()
是一个未定义的函数。
使用asp:Button
代替input
来使用服务器端点击事件。此外,dojob()
应为protected
。通过不声明保护级别,我认为默认值为private
,因此页面控件甚至可能无法看到它。它应与按钮单击的事件处理程序匹配:
protected void dojob(Object sender, EventArgs e)
{
}