ASP.NET 2.0里输出文本格式流

在用 ASP.NET 编程时,打开一个页面一般是通过指定超链接地址,调用指定的页面文件(.html、.aspx)等方法。

但是,如果即将打开的页面文件的内容是在程序中动态生成,或者是从数据库的表里取出的,我们怎么把这些内容展示出来呢?

我们最直接的想法是,把这些内容先保存成网页文件,再调用它。这种方法当然是可以的,但不是最好的方法,因为这样会在 Web 服务器上生成

许多临时文件,这些文件可能永远也用不着了。

另一种最好的方法是利用文本格式流,把页面内容动态地展示出来。例如,有一个页面:

  ……
  <iFrame src=""></iframe>
  ……


需要用 iFrame 打开一个页面,这个页面的内容是动态生成的。我们可以写一个 .ashx 文件(这里命名为 html.ashx)来处理。.ashx 文件里实现了 IHttpHandler 接口类,可以直接生成浏览器使用的数据格式。

html.ashx 文件内容:

using System;
using System.IO;
using System.Web;
public class Handler : IHttpHandler {
public bool IsReusable {
get {
return true;
}
}
public void ProcessRequest (HttpContext context)
{
// Set up the response settings
context.Response.ContentType = "text/html";
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.BufferOutput = false;
Stream stream = null;
string html = "成功: test of txt.ashx";
byte[] html2bytes = System.Text.Encoding.ASCII.GetBytes(html);
stream = new MemoryStream(html2bytes);
if (stream == null)
stream = new MemoryStream(System.Text.Encoding.ASCII.GetBytes("get Nothing!"));
//Write text stream to the response stream
const int buffersize = 1024 * 16;
byte[] buffer = new byte[buffersize];
int count = stream.Read(buffer, 0, buffersize);
while (count > 0)
{
context.Response.OutputStream.Write(buffer, 0, count);
count = stream.Read(buffer, 0, buffersize);
}
}
}


html.ashx 文件中首先把 string 字符串转化为字节(byte)数组,然后再生成内存中的 MemoryStream 数据流,最后写到 OutputStream 对象中,显示出来。

这样以来,我们就可以通过<iFrame src="html.ashx"></iframe>来展示动态生成的页面,显示“成功: test of txt.ashx”的网页内容。html.ashx 文件中 string html = "成功: test of txt.ashx"; 一句中,变量 html 的内容完全可以从数据库中得到(事先把一个 html 文件内容保存在数据库中)。

时间: 2024-08-30 14:03:14

ASP.NET 2.0里输出文本格式流的相关文章

ASP.NET 2.0 里输出文本格式流

asp.net 在用 ASP.NET 编程时,打开一个页面一般是通过指定超链接地址,调用指定的页面文件(.html..aspx)等方法. 但是,如果即将打开的页面文件的内容是在程序中动态生成,或者是从数据库的表里取出的,我们怎么把这些内容展示出来呢? 我们最直接的想法是,把这些内容先保存成网页文件,再调用它.这种方法当然是可以的,但不是最好的方法,因为这样会在 Web 服务器上生成 许多临时文件,这些文件可能永远也用不着了. 另一种最好的方法是利用文本格式流,把页面内容动态地展示出来.例如,有一

ASP.NET 2.0里动态访问META标记

asp.net|动态|访问 在asp.net 2.0里,可以支持动态访问meta 标记了,比如可以动态增加关键字了Private Sub CreateMetaTags()      Dim hm As New HtmlMeta()     Dim head As HtmlHead = CType(Page.Header, HtmlHead)     hm.Name = "Keywords"     hm.Content = "VB.Net, VB.NET, .NET"

asp.net中StringTemplate自定义输出日期格式

Use additional renderers like this实现接口的类:  代码如下 复制代码 internal class AdvancedDateTimeRenderer : IAttributeRenderer {     public string ToString(object o)     {         return ToString(o, null);     }       public string ToString(object o, string forma

Asp.net怎么导出Excel/Csv文本格式数据?

  刚刚开始做Excel相关的项目,所以遇到的问题不管大小都给记录一下 偶然的机会在添加数据的时候全改成了数字,结果输出的时候全自动变成了科学计数法,这是excel的强大功能,能自动识别数字和字符串,太聪明了反而有些麻烦,就像如果输入身份证(18位数字)的话那就不行了.超过了11位呢,下面查了些资料总结一下解决方案: 方法1: 在往excel中添加数据的时候在数据的前面加 单引号,我的是这个方法解决的 如:Sheet.Cells[iRow, iCol] ="'"+ ds.Tables[

Asp.net 2.0 实现自定义Email格式有效性验证(示例代码下载)

asp.net|示例|下载 (一). 概述及功能          用了两种方法实现验证Email格式,Asp.net验证控件和手动编写代码验证.并用到简单工厂和适配品设计模式, 代码重构技术.    实现自定义Email邮件地址有效性验证, 完成如下功能:Question 11. Email 格式为 user@server.domain. 例如: King.Cheng@hotmail.com or King.Cheng@hotmail.com.cn or King.Cheng@hotmail.

asp.net 2.0里也可以用JSON的使用方法_实用技巧

全部代码如下.  复制代码 代码如下: /// <summary> /// JSON解析类 /// </summary> public static class JSONConvert { #region 全局变量 private static JSONObject _json = new JSONObject();//寄存器 private static readonly string _SEMICOLON = "@semicolon";//分号转义符 pri

在ASP.NET 2.0中使用RDLC格式的报表的问题

最近做的项目中需要根据数据绘制折线图,于是就想利用VS2005自带的报表工具做.一开始很顺利,后来发现页面绘制的图表,不能随参数变化而变化,为此折腾了大半个下午,真是阴沟里翻船,最后发现缺少对 ReportViewer.LocalReport.Refresh 的调用,加班让我脑袋混沌了很多-- 不过到现在还弄不明白的是,在发布系统的时候出现的问题.我是直接利用VS2005的 publish 功能发布系统,它采用预编译的方式,我去掉了"Allow this precompiled site to

在ASP.NET 2.0中操作数据之三十九:在DataList的编辑界面里添加验证控件_自学过程

导言 到目前为止的讨论编辑DataList的教程里,没有包含任何验证用户的输入,即使是用户非法输入- 遗漏了product的name或者负的price- 会导致异常.在前面一章里我们学习了如何在DataList的UpdateCommand事件处理中添加异常处理代码,以便在出现异常时捕捉它并显示友好的错误信息.然而理想的编辑界面应该包含验证控件,用来在第一时间里阻止用户输入一些非法数据. 本章我们将学习在DataList的EditItemTemplate里添加验证控件从而提供一个更安全的编辑界面,

在ASP.NET 2.0中操作数据之四十九:为GridView控件添加RadioButton_自学过程

导言: GridView控件提供了大量的内置功能.它包含了一系列的域(field)来显示诸如text.images.hyperlinks和buttons.另外它支持模板(template)用于用户自定义界面.我们可以构建这样一个GridView控件,用户仅需要点击控件里的一个按钮,每一条记录行都可以选择.编辑.删除.除了控件本身内置的功能外,在某些情况下,我们添加一些额外的.控件没有内置的功能.在本章及接下来的2篇教程里我们将探讨如何优化GridView,以支持额外的功能. 本篇及接下来的教程将