打印

[.net] 关于ashx

通常我们要从数据库中读取图片
大家会想到http handler,也就是Ashx文件
对图片来说会很适用
因为有这样的标签
复制内容到剪贴板
代码:
<img src="myHttpHander.ashx?id=123" width="20" height="20" />
在myHttpHander.ashx中,我们可以用context.Response.BinaryWrite来输出图片内容
但是如果对外输出文字
就像context.Response.Write("1234");
那么怎么在页面上引用这个1234?

不知道我讲清楚没有?
如果http handler输出的是图片的话可以用<img>标签来输出
但是它如果是文字又怎么来输出呢?
那就不用这个了~~~~用WebService吧~~~~再JS去取~~~
输出文字的话,就等于是输出一个页面
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");

就相当于一个仅仅写着 Hello World 的  .txt  .js .css  .htm  .aspx ..... 任意一种文本文件

所以,可以把它当成文本文件去对待.

比如
Hander.ashx
如下

 提示:您可以先修改部分代码再运行
t.aspx如下:

 提示:您可以先修改部分代码再运行
效果是弹出alert

你也可以把.ashx当成css文件,然后
<link href="css/Handler.ashx" rel="stylesheet" type="text/css">

或者xml文件

orderDoc.load("Handler.ashx");

:D

甚至是 aspx文件.....

[ 本帖最后由 warran 于 2007-3-24 05:54 编辑 ]

TOP

认证您的手机,获得手机认证图标, 更多手机认证的好处
非常感谢warran,不过弹出个alert固然可行
如果我不想输出alert('hi')而是想输出hi到页面(在页面上显示hi)
那么就只会什么也没有了
还是用web services,martin0728 的好建议。
context.Response.ContentType = "text/plain";
既然已经定义了输出的属性,那么就可以把其当成是个文本文件.

如果要在页面显示的话,可以include

TOP

复制内容到剪贴板
代码:
<%@ WebHandler Language="C#" Class="TestHandler" %>
using System;
using System.Web;
public class TestHandler : IHttpHandler {
   
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        context.Response.Write("document.write(\"Hello World\");");
    }

    public bool IsReusable {
        get {
            return false;
        }
    }
}
前台页:
复制内容到剪贴板
代码:
<script type="text/javascript" src="TestHandler.ashx" />
但是这种没有使用WebService好,原因是它可能延长加载时间
我们在context.Response.ContentType= "text/plain";这里再加上一句测试:
System.Threading.Thread.Sleep(8000);
再打开页面时可以感觉到明显的延迟

[ 本帖最后由 martin0728 于 2007-3-31 10:15 编辑 ]

TOP