牛腩新闻发布系统之技术篇(一)——.ashx简介
来源:互联网 发布:建行网络贷款怎么过 编辑:程序博客网 时间:2024/06/10 04:09
牛腩新闻发布系统中,对.aspx,.ascx和.ashx都涉及到了。关于它们,网上有很多文章介绍,但一直比较模糊,下面自己总结一下做个笔记,但着重介绍一下“.ashx”。
一、概念简介
1、.aspx
Web窗体设计页面。Web窗体页由两部分组成:视觉元素(html、服务器控件和静态文本)和该页的编程逻辑(VS中的设计视图和代码视图可分别看到它们对应得文件)。VS将这两个组成部分分别存储在一个单独的文件中。视觉元素在.aspx 文件中创建。
2、.ascx
asp.net的用户控件,是作为一种封装了特定功能和行为(这两者要被用在Web应用程序的各种页面上)的Web页面被开发的。一个用户控件包含了html、代码和其他Web或者用户控件的组合,并在Web服务器上以自己的文件格式保存,其扩展名是*.ascx。asp.net里的缺省配置并不允许Web客户端通过url来访问这些文件,但是这个网站的其他页面可以集成这些文件里所包含的功能。
3、.ashx
前面两个都介绍了,这个才是要讲的重点。
.ashx文件是主要用来写web handler的。使用.ashx 可以让你专注于编程而不用管相关的web技术。我们熟知的.aspx是要做html控件树解析的,.aspx包含的所有html实际上是一个类,所有的html都是类里面的成员,这个过程在.ashx是不需要的。ashx必须包含IsReusable属性(这个属性代表是否可复用,通常为true),而如果要在ashx文件用使用Session必须实现IRequiresSessionState接口.
在VS中右击项目,添加新项,我们找到.ashx文件在新建项模板中叫做“一般处理程序”,那么这个一般处理程序用来干吗的呢?我们可以这样地简单理解,嗯,不需搞得太复杂,它就类似.aspx文件,用于处理传入到服务器的HTTP请求,但它不会像.aspx文件那样要返回处理结果和大量HTML,它可以返回简单的字符串、图片等。
二、举个例子
1、在项目中添加一个.ashx文件,并改写默代码,如下:
using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace WebApplication1{ /// <summary> /// imageHandle 的摘要说明 /// </summary> public class imageHandle : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "image/jpeg"; string imgPath = @"~/images/{0}.jpg"; //根据请求的查询字符串显示对应图片 switch (context.Request.QueryString["id"]) { case "1": context.Response.WriteFile(context.Server.MapPath(string.Format(imgPath, "1"))); break; case "2": context.Response.WriteFile(context.Server.MapPath(string.Format(imgPath, "2"))); break; case "3": context.Response.WriteFile(context.Server.MapPath(string.Format(imgPath, "3"))); break; default: //默认显示第一张图片 context.Response.WriteFile(context.Server.MapPath(string.Format(imgPath, "1"))); break; } } public bool IsReusable { get { return true; } } }}我简单说一下,这个类,根据请求的查询参数,返回对应的图片,所以,你可以随便准备3张图片做测试。
2、做好.aspx页面
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title></head><body> <form id="form1" runat="server"> <div> <div> <img id="img" src="images/1.jpg" height="300px" /> </div> <a href="#" onclick="GetImg(1)">1</a> <a href="#" onclick="GetImg(2)">2</a> <a href="#" onclick="GetImg(3)">3</a> </div> </form></body></html><script type="text/javascript"> function GetImg(index) { var myImg = document.getElementById('img'); myImg.src = './imageHandle.ashx?id=' + index; }</script>
这个例子是这样的,有三个链接,分别为1、2、3,点击后显示对应的图片。
三、总结
aspx-->P(Page)
ascx-->C(Control)ashx-->H(HttpHandler)
其实aspx要将前后台显示和处理逻辑分开,所以就弄成了两个文件,其实,在最终编译的时候,aspx和cs还是会编译到同一个类中去.这中间就要设计html的一些逻辑处理;而ashx不同,它只是简单的对web http请求的直接返回你想要返回的结果.比aspx少处理了html的过程(但是ashx也可以处理html的一些逻辑,只是通常都不这么用)。理论上ashx比aspx要快。
- 牛腩新闻发布系统之技术篇(一)——.ashx简介
- 牛腩新闻发布系统之技术篇(二)——生成验证码
- 牛腩新闻发布系统之技术篇(四)——.aspx页面弹出窗口
- 牛腩新闻发布系统之技术篇(三)——汉字超出指定长度部分以"..."代替
- 牛腩新闻发布系统——后台前台整合技术
- 牛腩新闻发布系统——技术总结
- 《牛腩新闻发布系统》回顾(一)
- 牛腩新闻发布系统(一)
- 牛腩新闻发布系统(5)——添加新闻之FreeTextBox使用
- 牛腩新闻发布系统——总结
- 牛腩新闻发布系统——触发器
- 牛腩新闻发布系统——总结
- 【牛腩新闻发布系统】——总结
- 【牛腩】——新闻发布系统收工
- 【牛腩新闻发布系统】——总结
- 【牛腩新闻发布系统】——CSS
- 【牛腩新闻发布系统】——牛腩初印象
- 牛腩新闻发布系统总结(一)——总体感受
- Android功能添加Ant的build.xml
- Mysql几种索引类型的区别及适用情况
- EL表达式(一)
- TIBCO EMS MESSAGE
- 快速查找法
- 牛腩新闻发布系统之技术篇(一)——.ashx简介
- sig
- JAVA中String与StringBuff的区别
- 第十二章
- 第十三章
- 智力题——21.善变者
- HTML5实战与剖析之移动端IOS系统收缩地址导航栏功能
- lucene4.5.0----高亮显示实现
- eclipse3.7 安装完整maven和svn插件