页面即对象

Posted LoveTomato

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了页面即对象相关的知识,希望对你有一定的参考价值。

网站最终向用户展现形形色色的网页,这些网页是通过流的形式传输到客户端的。

对于Asp.net服务,浏览器的http请求为流的来源,网页响应为流的目标。我们可以通过Response.OutputStream获取输出流,直接向流内写入组成网页。

字节流

网页html标识符和文字以字节byte流传输的,一个字节有8bit组成,对于字节的解析对应着字符编码,常用的编码有UTF-8,中文编码GB2312。可以通过静态方法Encoding.UTF8.GetBytes对字节流或字符编码。

字符流

为了操作的方便,利用装装饰者模式,提供了字符流。开发者只需将字符和编码传入给流即可。

 Stream output = Response.OutputStream;
StreamWriter sw = new StreamWriter(output);
sw.Write("Hello World!", Encoding.UTF8);

为了Html标签的输入有流,简单创建一个div

    TextWriter txtWrite = Response.Output;
    XhtmlTextWriter htmlWrite = new XhtmlTextWriter(txtWrite);
    htmlWrite.RenderBeginTag(HtmlTextWriterTag.Div);
    htmlWrite.AddAttribute(HtmlTextWriterAttribute.Id, "div");
    htmlWrite.RenderEndTag();

控件

html是一个树形结构,asp.net 也是通过一个组成模式的树形结构来拼凑Html页面的,其中每个节点为控件。为了方便操作将控件封装为对象有属性、方法和事件。开发者通过继承开发自己的控件。系统提供的控件有:HtmlControl和WebControl两种基类。
public class Hidden : WebControl { protected override string TagName { get { return "Div"; } } protected override void Render(HtmlTextWriter writer) { } }
控件实现的接口

接口名称 作用
INamingContainer 子控件命名生成规则
IAttributeAccessor 为控件添加或获取属性
IPostBackDataHandler 向服务器回发数据
IPostBackEventHandler 控件回发

以上是关于页面即对象的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法关闭代码片段中的命名建议?

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

asp.net页面实用代码片段

Rail片段缓存如何使您的应用受益,即阻止数据库调用?

使用 NodeJS 和 JSDOM/jQuery 从代码片段构建 PHP 页面

VSCode自定义代码片段12——JavaScript的Promise对象