功能上有什么区别
<asp:Button id="button1" Text="Click me" runat="server" OnClick="submitEvent" />
和
<input type="button" id="button1" runat="server" value="Click me" />
具有 runat="server" 属性的输入是否具有其他或有限的属性和方法?
谢谢!
功能上有什么区别
<asp:Button id="button1" Text="Click me" runat="server" OnClick="submitEvent" />
和
<input type="button" id="button1" runat="server" value="Click me" />
具有 runat="server" 属性的输入是否具有其他或有限的属性和方法?
谢谢!
第一个创建一个System.Web.UI.WebControls.Button
while 第二个创建一个System.Web.UI.HtmlControls.HtmlInputButton
.
两者都是服务器控件,但WebControls
命名空间中的控件通常比命名空间中的控件具有更多功能HtmlControls
。通常他们会放入一些数据ViewState
来跟踪他们的状态,并且他们有服务器端的回发事件。
命名空间中的每个控件都HtmlControls
与一个 HTML 元素完全对应,而WebControls
命名空间中的控件的呈现方式可能会有所不同,具体取决于请求页面的浏览器可以支持的内容。
表示的按钮<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。
前一行是 ASP.NET,后一行是简单的 XHTML。
前者在服务器端进行解析和解释,然后生成 HTML 代码,这几乎对应于您的第二个示例。ASP.NET 按钮实际上只是对 HTML 输入按钮功能的轻量级包装器,应该在需要处理Click
服务器端事件(或在一般情况下为任何事件)的任何地方使用,并且通常是去吧,因为您让 ASP.NET 为您抽象出页面上的按钮概念。
这两个控件的功能相同,区别在于第一个是 .net 控件,第二个是 html 控件,可以通过使用
运行=“服务器”。
第一个有丰富的事件和方法然后第二个....
没有与此类控件关联的服务器事件,但您可以在代码隐藏中使用它来更改它的属性。
您的第二个选项甚至可能都行不通。runat="server" 将直接呈现到 HTML 输出,它没有任何功能,只会破坏 HTML 验证。
input 是一个 HTML 元素,它只有 HTML 属性,绝对没有任何类型的方法。