Visual Web Developer html按钮onclick事件没有触发

时间:2013-04-17 15:25:29

标签: c# visual-web-developer vwdexpress

以下是我的代码:

的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上)

由于

3 个答案:

答案 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)
{

}