asp的问题:按钮OnClick事件

时间:2009-06-17 07:05:16

标签: c# asp.net onclick

这是我的按钮

<asp:Button ID="myButton" Text="Click Me" OnClick="doSomething(10)" runat="server" />

这是服务器功能

public void doSomething(int num)
{
    int someOtherNum = 10 + num;
}

当我尝试编译代码时,我得到错误“预期的方法名称”:

<asp:Button ID="myButton" Text="Click Me" OnClick="doSomething(10)" runat="server" />

我做错了什么?我不允许从OnClick事件向服务器传递值吗?

4 个答案:

答案 0 :(得分:16)

这里有两个问题。首先,onclick事件具有特定的签名。它是

MethodName(object sender, EventArgs e);

其次,在标记中,您只需要传递方法名称而不使用括号或参数。

<asp:Button ID="myButton" Text="Click Me" OnClick="doSomething" runat="server" />

然后按如下方式更改您的代码隐藏:

public void doSomething(object sender, EventArgs e)
{
    ....
}

参数的传递可以在客户端单击事件处理程序上完成,在本例中为OnClientClick,但不在服务器端处理程序上。

答案 1 :(得分:2)

按钮的OnClick是一个事件处理程序。要将函数挂钩到eventHandler,您需要遵守由EventHandler定义的契约,如Jose mentioned。 OnClick绑定到格式为void doSomething(object sender, EventArgs e)的函数。所以你的功能应该是相同的格式。

我不确定为什么要将参数传递给事件处理程序。如果你想采取一些手动操作,你需要使用其他控制来做到这一点。

<asp:TextBox ID="txtNumber" runat="server" /><asp:Button ID="myButton" Text="Click Me" OnClick="doSomething" runat="server" />

在代码中

public void doSomething(object sender, EventArgs e)
{
int AnotherNumber=   Int32.Parse(txtNumber.Text)+10;
}

答案 2 :(得分:2)

有更简单的解决方案。您可以使用ASP按钮OnCommand事件。 有关此处的更多信息:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.oncommand.aspx

答案 3 :(得分:0)

您必须将方法的结构更改为

public void doSomething(object sender, EventArgs e)
    {
        ....
    }

并且为了传递参数,你需要解决这个问题:

例如,如果您在Html控件中,您可以在属性值中使用您的参数(例如此exapmle中的ID),然后在服务器端处理程序中检索它

即使控件改变样式颜色

Html:

<a href="" id="Grey" runat="server" onserverclick='ApplyStyleEvent'></a>

代码:

protected void ApplyStyleEvent(object sender, EventArgs e)
{
    Profile["SelectedStyle"] = ((HtmlControl)sender).ID;
    Response.Redirect("");
}

等等。