【问题标题】:In asp.net what is the difference between using asp.net web control and simple html imput control在asp.net中使用asp.net web控件和简单的html输入控件有什么区别
【发布时间】:2013-09-18 21:29:15
【问题描述】:

在我的 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输入控件有什么区别,它们都在表单提交后将值传递给后面的代码。有人可以帮我吗?

【问题讨论】:

    标签: c# html asp.net


    【解决方案1】:

    正如您的示例中所定义的,input type="text" 甚至对代码隐藏都不可见,因为它缺少 runat="server" 属性。

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

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

    【讨论】:

    • 你的是最简单和最棒的解释。那么,是不是所有的 asp.net 控件实际上都呈现为浏览器的 HTML 控件,只是它们具有事件和其他属性提供了极大的灵活性和对普通 HTML 控件的控制。那么我们是否可以推断出 HTML 控件事件也可以和这些 asp.net 控件一起使用呢?像下拉列表的 onchange 事件?
    • @FlopScientist 没错。每个 ASP.NET 控件都在浏览器中呈现为 HTML 控件(更复杂的 ASP.NET 控件可以呈现为多个 HTML 控件 - 请参阅 GridView、Calendar、RadioButtonList 等)但本质上是的,它们呈现为可以使用相同的 HTML 控件作为标准 HTML 控件的客户端事件。例如。 DropDownList 在浏览器中呈现为 SELECT 控件,可以使用 onchange 事件。
    【解决方案2】:

    最大的区别在于

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • 您是说 type="text" 的第一个控件在后面的代码中不可用,但我已经测试了这段代码,因为我提到两个控件都将值传递给后面的代码。但我发现的区别是asp.net控件在回发后保留该值,而简单的html控件没有保留该值,它只是在回发后显示空值。我想这意味着简单的 html 控件不会保存在页面的视图状态中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      • 2013-03-05
      • 2011-05-23
      相关资源
      最近更新 更多