按钮的OnClick事件:与ASP问题(Problems with asp:Button OnCli

2019-09-16 09:40发布

这里是我的按钮

<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事件值传递给服务器?

Answer 1:

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

MethodName(object sender, EventArgs e);

其次,在标记,你只需要使用没有括号或PARAMS传递的方法名。

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

然后改变你的代码隐藏如下:

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

参数的传递可以在客户端点击事件处理完成,在这种情况下的OnClientClick,但不是在服务器端的处理程序。



Answer 2:

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



Answer 3:

按钮的onClick函数的事件处理程序。 挂钩一个功能,你需要遵守的是由事件处理程序定义,作为合同的事件处理程序中提到何塞。 的OnClick绑定到格式的函数void doSomething(object sender, EventArgs e) 。 所以,你的功能应该是相同的格式。

我不确定为什么要一个参数传递到事件处理程序。 如果你想采取一些manuplation你需要使用一些其他的控制做的。

<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;
}


Answer 4:

你必须改变你的方法的结构是一样

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

和传递参数,你需要周围的工作是这样的:

例如,如果你在一个HTML控件你可能但是在属性值的参数(如ID在这exapmle),然后在服务器端的处理程序进行检索

即作出控制转变作风颜色

HTML:

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

代码:

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

等等。



文章来源: Problems with asp:Button OnClick event