这里是我的按钮
<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事件值传递给服务器?
这里有两个问题。 首先,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,但不是在服务器端的处理程序。
有简单的解决方案。 你可以使用ASP按钮按需事件。 更多关于这里: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.oncommand.aspx
按钮的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;
}
你必须改变你的方法的结构是一样
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("");
}
等等。