1

在我的 asp.net web 控件表单中,我使用了两个文本框,第一个是简单的输入 html 控件,第二个是 asp.net 输入 web 控件。

<form id="form1" runat="server">

        Email: <input type="text" id="txt_email" name="txt_email" value="" /><br />
        Email2: <asp:TextBox ID="txt_email2" runat="server"></asp:TextBox><br />       

        <asp:Button ID="btn_login" Name="btn_login" runat="server" Text="Button" 
            onclick="btn_login_Click" />

    </form>

我需要知道使用简单控件和 asp.net 输入控件有什么区别,它们都在表单提交后将值传递给后面的代码。谁可以帮我这个事?

4

3 回答 3

1

正如您的示例中定义的那样input type="text",代码隐藏甚至不会看到它,因为它缺少runat="server"属性。

如果你添加它 - 仍然存在差异。ASP.NET TextBox 更先进,与 ASP.NET 模型的其余部分相当(例如,它具有.Text.ValueHtmlInput 控件相比的属性,它具有事件和其他属性)。

但是,如果您只是需要将文本信息传回服务器,它们中的任何一个都可以完成这项工作。

于 2013-09-18T21:32:23.697 回答
0

最大的不同在于

  1. asp.net 控件在服务器上呈现,因此与使用传统控件相比,它们在服务器上的开销更大 - 传统控件(默认情况下)呈现一次,然后基本上驻留在客户端的浏览器上,asp 控件在服务器端持久存在.
  2. 可以直接在文件背后的代码中访问和使用 asp 控件。
  3. asp 控件有一些额外的标签,通常可以在它们的字段上使用。
  4. 正如@Yuriy-Galanter 所指出的,访问值的方式略有不同。
于 2013-09-18T21:32:10.870 回答
0

当发出页面请求时,asp:Textbox 将 HTML 呈现给客户端/浏览器。想象一下 ASP.NET 控件,在本例中是一个 asp:TextBox 作为服务器端代码,它知道在<input type="text">向服务器发出对 aspx 页面的请求时呈现 HTML 元素。

ASP.NET 编译器在解析您的 aspx 页面时,只会吐出<input type="text">您对 Email: 和 Email2 的 HTML 元素:ASP.NET 编译器知道这是一个服务器控件,因为 runat="server" 标记。所以 ASP.NET 编译器,在服务器上引用了 ASP.NET 程序集,读取代码<asp:TextBox>并知道最终响应页面请求<input type="text" id="txt_email2" />

服务器端控件可在您的代码隐藏页面中访问。所以可以在后面的代码中访问,但<input>元素不是。在这一点上,您可以在研究中考虑一下,如果您将 runat="server" 添加到您的元素中,那么您可以在后面的代码中访问它。

于 2013-09-18T21:35:25.457 回答