11

功能上有什么区别

<asp:Button id="button1" Text="Click me" runat="server" OnClick="submitEvent" />

<input type="button" id="button1" runat="server" value="Click me" />

具有 runat="server" 属性的输入是否具有其他或有限的属性和方法?

谢谢!

4

6 回答 6

20

第一个创建一个System.Web.UI.WebControls.Buttonwhile 第二个创建一个System.Web.UI.HtmlControls.HtmlInputButton.

两者都是服务器控件,但WebControls命名空间中的控件通常比命名空间中的控件具有更多功能HtmlControls。通常他们会放入一些数据ViewState来跟踪他们的状态,并且他们有服务器端的回发事件。

命名空间中的每个控件都HtmlControls与一个 HTML 元素完全对应,而WebControls命名空间中的控件的呈现方式可能会有所不同,具体取决于请求页面的浏览器可以支持的内容。

于 2009-05-18T11:35:05.117 回答
1

表示的按钮<asp:Button runat="server".../>将被转换为具有丰富状态模型和不同属性和方法的 Web 服务器控件,在现实世界中具有更清晰的表示,例如 Button.Text = "Click Me"。

所代表的按钮<input type="button" runat="server"..../>将被转换为HtmlInputButton所代表的html服务器控件;with 具有有限的属性、方法和事件。大多数属性类似于 Button.Value="Click Me" 等 html 等效项。

请注意,标记页面中的元素在使用之前经过预处理/编译,并将转换为类表示,其中每个元素都由控件表示。您可以从后面的代码访问由 runat="server" 标记标识的服务器端控件,因为它们将具有正确匹配的服务器控件(web/html),其他静态内容包括没有<input type="button.../>runat="server" 的标记将表示为 LiteralControl。

于 2009-05-18T11:50:13.353 回答
0

前一行是 ASP.NET,后一行是简单的 XHTML。

前者在服务器端进行解析和解释,然后生成 HTML 代码,这几乎对应于您的第二个示例。ASP.NET 按钮实际上只是对 HTML 输入按钮功能的轻量级包装器,应该在需要处理Click服务器端事件(或在一般情况下为任何事件)的任何地方使用,并且通常是去吧,因为您让 ASP.NET 为您抽象出页面上的按钮概念。

于 2009-05-18T11:25:04.683 回答
0

这两个控件的功能相同,区别在于第一个是 .net 控件,第二个是 html 控件,可以通过使用

运行=“服务器”。

第一个有丰富的事件和方法然后第二个....

于 2009-05-18T12:55:17.997 回答
-1

没有与此类控件关联的服务器事件,但您可以在代码隐藏中使用它来更改它的属性。

于 2009-05-18T11:24:45.513 回答
-3

您的第二个选项甚至可能都行不通。runat="server" 将直接呈现到 HTML 输出,它没有任何功能,只会破坏 HTML 验证。

input 是一个 HTML 元素,它只有 HTML 属性,绝对没有任何类型的方法。

于 2009-05-18T11:23:07.683 回答