1

我在What Great .NET Developers Ought To Know 中看到了这个问题——作者:Scott Hanselman

我不太确定,但据我所知,按钮控件被呈现为 HTML,输入标签为提交(带有动态 ID)。当触发 POST 事件时,ASP.Net 使用动态生成的按钮 ID 并匹配 C# 端的相应按钮单击事件......

请让我知道,如果我的理解是正确的。认为它可能完全错误或断章取义。

更新:-

我做了一点谷歌,发现了这个链接,它声明为

HTML 中的 ASP.NET Button 控件是一个 HTML 输入元素,其 type 属性设置为“提交”。HTML 中的提交按钮调用 POST,使用来自表单元素的 action 属性,对于 ASP.NET,它是当前页面。由于这是一个 POST,表单变量由表单元素中输入元素的所有值填充,包括提交按钮的值(名称)。当 POST 到达服务器并被 ASP.NET 解析时,它会确认 POST 是由提交按钮发起的,这会变成原始 ASP.NET Button 控件的 Click 事件。

4

3 回答 3

1

您是否尝试过创建带有多个按钮的简单 ASP.NET 单页应用程序?您可以这样做,然后在浏览器中检查输出页面。您将看到隐藏字段 __EVENTTARGET,其按钮 id 的值用于提交,在每次回发时,此隐藏字段都会传输到服务器以及 __VIEWSTATE。也许这就是“答案”?

于 2013-11-10T12:11:21.807 回答
1

HTML 中的 ASP.NET Button 控件是一个 HTML 输入元素,其 type 属性设置为“提交”。HTML 中的提交按钮调用 POST,使用来自表单元素的 action 属性,对于 ASP.NET,它是当前页面。由于这是一个 POST,表单变量由表单元素中输入元素的所有值填充,包括提交按钮的值(名称)。当 POST 到达服务器并被 ASP.NET 解析时,它会确认 POST 是由提交按钮发起的,这变成了原始 ASP.NET Button 控件的 Click 事件。

于 2014-04-09T01:50:20.017 回答
0

在 .NET Web Forms 应用程序中,各种事件(通常是单击事件)将表单发送回服务器。该事件是诸如“Button1_OnClick”之类的消息,由事件委托绑定到方法(即事件处理程序)。

下面的代码示例有一个将方法System.EventHandler绑定到事件的对象。Button1_OnClickButton1.Click

private void InitializeComponent()
{
    this.Load += new System.EventHandler(this.Page_Load);
    this.Button1.Click += new System.EventHandler(this.Button1_OnClick);
}

private void Button1_OnClick(object sender, System.EventArgs e)
{
}
于 2014-06-17T23:05:15.737 回答