Asp:Textbox vs输入文本(PHP开发人员学习ASP)

时间:2011-08-30 18:25:31

标签: php asp.net

我已经做了10年的PHP开发人员,试图拓宽视野我正在做一个ASP.NET项目。使用<asp:TextBox>而不是使用标准<input type=’text’>

有什么好处

使用常规<input type=”text”>而非<asp:TextBox>似乎更有利。首先,在呈现页面时,<asp:TextBox>成为标准<input type=text>。当我使用标准<input type=”text”>时,我可以通过Request.Form [“Name”]在服务器端代码中轻松检索它们的值。接下来,当我动态添加输入(通过javascript)时,我无法使用TextBox,我需要使用<inputs type=”text”>。最后渲染正常输入会不会更快?如果我使用<asp:TextBox>进行编码,则必须将其呈现在我使用<input type=”text”>的位置,只需要显示它。

换句话说,当标准输入同样有效时,为什么还要使用所有的asp控件?如果不是更好......

3 个答案:

答案 0 :(得分:16)

  

使用过度使用标准<input type=’text’>有什么好处?

  • 您可以在代码隐藏页面中更轻松地引用文本框
    • 请注意,您可以使用控件中的runat="server"访问代码隐藏中的任何HTML元素
  • 您可以在文本框中访问比输入html元素
  • 更多的属性
  • 您可以将文本框与其他ASP.NET控件(如验证器)
  • 一起使用
  • 您可以使用它们比输入更轻松地执行数据绑定
  • 与使用输入和javascript相比,您可以更轻松,更轻松地附加带有文本框的事件

比较摘要

  • 更快/更简单的编程
  • 与其他ASP.NET控件的兼容性
  

接下来,当我动态添加输入(通过javascript)时,我无法使用TextBox,我需要使用<inputs type=”text”>

无论您使用ASP.NET还是Javascript,动态添加的控件都会变得非常混乱。在需要时(或使用中继器或数据网格)隐藏/显示控件要容易得多。

  

最后呈现正常输入会不会更快?如果我用代码编写,那么必须渲染,如果我使用它只需要显示。

我认为将ASP.NET与HTML / Javascript应用程序的速度进行比较是不公平的。 ASP.NET旨在呈现ASP.NET控件,并且在ASP.NET中使用HTML控件不会有任何显着的性能提升。

ASP.NET与HTML / Javascript

我觉得你的问题基本上就是“为什么不在钉子上用砖头而不是锤子?” ASP.NET是一个框架,并且在构建时考虑了ASP.NET控件。它的目的是让事情更快,更容易地编程,同时抽象掉通常用Javascript完成的大多数事情(通常是琐碎的,重复的事情)。

答案 1 :(得分:3)

<asp:TextBox>是一个服务器端控件,当页面呈现为html时最终会转换为<input。与<asp:TextBox>类似,您会看到还有其他控件将转换为标准HTML元素。

<asp:TextBox>

是一个服务器端控件,以便您可以使用其ID在代码隐藏中访问它,因此您甚至可以在后面的代码中执行.visible = true或false操作。

这些可能会有所帮助

ASP.NET服务器控件
优点:

  1. 但是,ASP .NET服务器控件可以检测目标浏览器的功能并相应地进行渲染。没有关于浏览器兼容性问题的问题,即HTML 3.2和HTML 4.0浏览器代码可能由您编写的页面。
  2. 可以与任何HTMl控件(如Calender控件)相同的方式使用的新控件集。 (不需要Activex Control来执行此操作,这会导致浏览器兼容性问题)。
  3. 处理将在服务器端完成。在内置功能中检查几个值(使用验证控件),因此无需在脚本语言之间进行选择,这与少数浏览器不兼容。
  4. ASP .NET服务器控件具有与传统HTML不同的对象模型,甚至提供了一组可以更改控件的外观和行为的属性和方法。
  5. ASP .NET服务器控件具有更高的抽象级别。 ASP .NET服务器控件的输出可以是许多HTML标记的结果,这些标记组合在一起以生成该控件及其事件。
  6. 缺点:

    1. 代码控制内置了Web服务器控件,因此您无法直接控制这些控件
    2. 将ASP迁移到任何ASP.NET应用程序很困难。它相当于重写你的新应用程序

答案 2 :(得分:0)

您可以将runat="server"属性添加到ASP.NET WebForms中的任何常规HTML标记中,它将作为HtmlGenericControl以后面的代码提供给您。您可以通过HtmlGenericControl.InnerText设置文字,也可以通过HtmlGenericControl.InnerHTML设置HTML。

使用ASP.NET TextBox的一个优点是,您可以将其呈现为<input type="text" /><textarea />TextBox.TextMode="multiline"

请参阅msdn.microsoft.com/en-us/library/7512d0d0.aspxmsdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.aspx