【问题标题】:Difference between asp controls and html with runat=server atribute带有 runat=server 属性的 asp 控件和 html 之间的区别
【发布时间】:2013-07-27 07:31:01
【问题描述】:

你能解释一下带有“runat=server”属性的控件和html组件之间的区别吗?使用它的最佳做法是什么?谢谢。

【问题讨论】:

  • 我假设你指的是
  • 你是对的。我在我的项目中看到很多地方都使用了
  • 在我看来
  • 理解的主要原因是,如果我想在页面上显示文本,我可以使用一些 html 标签和 VS 的部分控件。我知道我可以使用这两种建议,但如果我更喜欢使用 html 而不是 asp 组件,我可以使用 html。我说的对吗?

标签: asp.net runat


【解决方案1】:
<span runat="server" id="myspan"> </span> 

映射到 System.Web.UI.HtmlControls 中定义的 GenericControl 类。来自msdn的描述:

System.Web.UI.HtmlControls 命名空间包含允许 您可以在 Web 窗体页面上创建 HTML 服务器控件。 HTML 服务器 控件在服务器上运行并直接映射到标准 HTML 标记 大多数浏览器都支持。这允许您以编程方式 控制 Web 表单页面上的 HTML 元素。

<asp:Label runat="server" id="asplabel"></asp:Label> 

映射到 System.Web.UI.WebControls 中的 Label 类。来自msdn的描述

System.Web.UI.WebControls 命名空间包含允许 您可以在网页上创建 Web 服务器控件。 Web 服务器控件 在服务器上运行并包含表单控件,例如按钮和文本 盒子。它们还包括特殊用途的控件,例如日历。 由于 Web 服务器控件在服务器上运行,因此您可以 以编程方式控制这些元素。虽然 Web 服务器控制 呈现为 HTML,它们的对象模型不一定反映 HTML 语法。

System.Web.UI.WebControls 命名空间包含的类是 呈现为 HTML 标记,例如 TextBox 控件和 ListBox 控制。命名空间还包含未呈现的类 网页,但支持数据操作,如SqlDataSource 和 ObjectDataSource 类。其他控件,例如 GridView 和 DetailsView控件,支持数据显示和编辑。网络控制 类作为许多类的基类 System.Web.UI.WebControls 命名空间。

基本上,来自 WebControl 命名空间的控件为您提供了更多功能,其设计目的是尽可能地模仿 VB6 表单,以便在 winclient 和 webclient 编程之间无缝转换(来回)。

我个人倾向于尽可能多地使用 WebControls 命名空间中的控件,并且仅当我需要在 WebControl 上不可用且不可覆盖的行为时才回退到 HtmlConttols。

来自 K. Scot Allen 的 blog 就同一主题

【讨论】:

  • 从博客中我了解到我们应该使用 asp 控件,因为它让我们确信一切都会在客户端很好地显示。还有一点就是我们可以为按钮扩展asp控件和asp的另一个控件。
【解决方案2】:

服务器控件是服务器可以理解的标签。

共有三种服务器控件: HTML 服务器控件 - 传统的 HTML 标记 Web 服务器控件 - 新的 ASP.NET 标记 验证服务器控件 - 用于输入验证

HTML 服务器控制:

默认情况下,ASP.NET 文件中的 HTML 元素被视为文本。要使这些元素可编程,请将 runat="server" 属性添加到 HTML 元素。

例子:

<form runat="server">
......
</form>

Web 服务器控件:

Web 服务器控件是服务器理解的特殊 ASP.NET 标记。

与 HTML 服务器控件一样,Web 服务器控件也是在服务器上创建的,它们需要 runat="server" 属性才能工作。但是,Web 服务器控件不一定映射到任何现有的 HTML 元素,它们可能代表更复杂的元素。

例子:

<asp:Button ID="but" runat="server"/>

验证服务器控件:

验证服务器控件用于验证用户输入。如果用户输入没有通过验证,它将向用户显示一条错误消息。

例子:

<asp:RequiredFieldValidator ID="req1" runat="server" ControlToValidator="TextBox1" ErrorMessage="please enter proper details"/>

【讨论】:

    猜你喜欢
    • 2014-02-15
    • 2010-11-29
    • 2013-10-25
    • 1970-01-01
    • 2014-10-04
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    相关资源
    最近更新 更多