zoukankan      html  css  js  c++  java
  • ASP.NET中的另类控件

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

    [html] view plaincopy
     
    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">

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

    第三个:包括</head>后面的 <body>

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

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

    其中第二个和第四个属于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属性获取和设置值。

  • 相关阅读:
    ajax方式提交表单数据并判断当前注册用户是否存在
    Javaweb实现对mongodb的增删改查(附带源代码)
    Navicat导入sql server数据库
    教师信息管理系统(方式一:数据库为oracle数据库;方式二:存储在文件中)
    八中常用的算法设计
    物体高亮与半透明
    unity发布ios高通AR的问题
    UITabView
    iOS Undefined ..Arm64问题解决
    unityweb Request请求
  • 原文地址:https://www.cnblogs.com/ranran/p/3988231.html
Copyright © 2011-2022 走看看