如何从源视图(aspx)中的C#按钮添加事件处理程序

Dav*_*vid 7 c# asp.net

从HTML源视图中创建一个按钮,创建代码隐藏(webforms)事件处理程序的最简单方法是什么?

在VB.NET中,很容易切换到页面后面的代码,并使用顶部的对象和事件组合框来选择和创建.

在c#中缺少那些(我真的不喜欢设计视图).

Mar*_*ers 6

  • 确保"属性"窗口已打开.
  • 单击源视图中元素中的任意位置.
  • 单击"属性"窗口中的闪电符号(事件).
  • 找到要为其创建处理程序的事件.
  • 双击它.

  • 太糟糕了,需要切换到Design View. (4认同)
  • 在c#中,在html源视图中,闪烁螺栓不可见.因此,当在html视图(源代码)中查看aspx页面时,然后查看属性窗口中的螺栓不存在. (2认同)

Abe*_*bel 2

我同意这对于 C# 来说比对于 VB 来说没那么简单。我个人的偏好是简单地添加具有以下签名的函数(始终有效):

protected void MyButtonName_Clicked(object sender, EventArgs e)
{
    Button btn = (Button) sender;  // remember, never null, and cast always works
    ... etc
}
Run Code Online (Sandbox Code Playgroud)

然后,在 HTML/ASP.NET 部分的代码视图(也称为声明性代码)中,您只需添加:

<asp:Button runat="server" OnClick="MyButtonName_Clicked" />
Run Code Online (Sandbox Code Playgroud)

我发现在实践中这比浏览几个属性菜单更快,这些菜单并不总是根据焦点和成功编译等而起作用。您可以调整EventArgs该事件的任何内容,但所有事件都使用上面的基本签名。如果您不知道类型,只需在该行上放置断点,并e在对象中断时将鼠标悬停在对象上即可找出实际类型(但大多数情况下您会事先知道)。

这样做几次后,它就会成为第二天性。如果您不喜欢它,请稍等一下 VS2010,它变得更加容易。

注意:VB 和C# 都不会显示放置在命名容器(即GridView、ListView)内的元素的对象或事件。在这些情况下,你必须这样做。