• ASP.NET中的另类控件——LiteralControl


    首先看一个aspx文件里的部分内容:

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2 <html xmlns="http://www.w3.org/1999/xhtml">
    3 <head id="Head1" runat="server">
    4 <title></title>
    5 </head>
    6 <body>
    7 <form id="form1" runat="server">
    8 </form>
    9 </body>
    10 </html>


    我们知道ASP.NET会把这个文档解析成类似Dom的控件树,控件树是分层、递归的。其中最顶层的是页面Page,那么现在要问,Page的下一层有多少个控件?

    答案是5个,可以输出this.Page.Controls.Count的值验证一下。它是怎么解析的呢?

    第一个:从<!DOCTYPE到transitional.dtd">\r\n

    第二个:从<head id="Head1"到</head>,类型为HtmlHead;

    第三个:包括</head>后面的\r\n\<body>\r\n\t

    第四个:从<form id=到</form>,类型为HtmlForm;

    第五个:从</form>后面的\r\n到最后。

    其中第二个和第四个属于Html控件,而第一、三、五个则属于静态文本,ASP.NET将其解析成LiteralControl。LiteralControl既不是Web控件,也不是Html控件,自成一类,表示 HTML 元素、文本和 ASP.NET 页中不需要在服务器上处理的任何其他字符串。几乎可以说,LiteralControl是ASP.NET中肯定用到的控件,只是你可能不知道而已。

    关于LiteralControl,有几点说明:

    1. LiteralControl也可以有ID、ClientID和UniqueID,但一般很少用到。除了用FindControl方法外,给其设置ID没有什么意义。

    2. LitrelControl不具有视图状态,虽然它也有一个EnableViewState属性,但不起作用,回发后先前更改的状态必丢失。

    3.由于表示的是静态文本,所以无法为LitrelControl本身设置任何样式。

    4. 后台通过其Text属性获取和设置值。

  • 相关阅读:
    激活函数
    C++ 三大属性之多态
    C++ 编译运行过程
    优化方法
    目标检测中的IOU
    pytorch 单机多gpu运行
    WSAEventSelect网络模型
    根据数组中的索引删除对应的值
    从以下几点提高服务器并发量
    std::function
  • 原文地址:https://www.cnblogs.com/dalmeeme/p/2318152.html
Copyright © 2020-2023  润新知