3

这是我的按钮

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

这是服务器功能

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

当我尝试编译代码时,我收到以下行的错误“Method Name Expected”:

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

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

4

4 回答 4

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)上完成,但不能在服务器端处理程序上完成。

于 2009-06-17T07:08:46.650 回答
2

按钮的 OnClick 是一个事件处理程序。要将函数挂钩到事件处理程序,您需要遵守由事件处理程序定义的合同,正如Jose所提到的。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;
}
于 2009-06-17T07:15:12.317 回答
2

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

于 2010-05-09T10:16:05.570 回答
0

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

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

对于传递参数,您需要这样的解决方法:

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

即使控件更改样式颜色

网页:

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

代码 :

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

等等。

于 2015-05-26T14:39:34.307 回答