问题
I have the following code:
btnTest.Click += (sender,e) => SomeAction()
why does this code works in WinForms and not in asp.net. In asp.net I had to do the following:
btnTest.Click += new EventHandler(SomeAction);
target framework in both cases is .net 4.0
回答1:
Is it possible you are trying to call
btnTest.Click += (sender,e) => SomeAction()
from inside the Page_Load method or another event handler? In that case the parameters "sender" and "e" are already declared and can be causing a conflict.
Change the definition to:
btnTest.Click += (s,ea) => SomeAction();
You'll probably want to forward the arguments to your function though:
btnTest.Click += (s,ea) => SomeAction(s, ea);
回答2:
It works fine is ASP.NET 4.0 for me:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
private void SomeFunc()
{
Button1.Click += (sender, e) => SomeAction();
}
private void SomeAction()
{
}
}
来源:https://stackoverflow.com/questions/4017666/why-does-sender-e-someaction-works-on-winforms-and-not-in-asp-net