2)通过继承IHttpModule来实现url传值。
代码
代码如下:
using System; using System.Text; using System.Web; using System.IO; using System.Text.RegularExpressions; namespace ThreeHegemony.Utility { /// /// Auther: Jess.zou /// Create data: 2009-08-06 /// Description: 该类作用在Url地址后自动添加(cid) /// public class AutoAddCid : System.Web.IHttpModule { public void Init(HttpApplication context) { context.PostRequestHandlerExecute += new EventHandler(this.OnPreSendRequestContent); } protected void OnPreSendRequestContent(Object sender, EventArgs e) { System.Web.HttpApplication myCOntext= (System.Web.HttpApplication)sender; myContext.Response.Filter = new AppendSIDFilter(myContext.Response.Filter); } private void ReUrl_BeginRequest(object sender, EventArgs e) { string cid = ""; string url = ""; HttpContext cOntext= ((HttpApplication)sender).Context; if (string.IsNullOrEmpty(context.Request.QueryString["cid"])) { if (context.Request.QueryString.Count == 0) { url = string.Format("{0}?cid={1}", context.Request.RawUrl, cid); } else { url = string.Format("{0}&cid={1}", context.Request.RawUrl, cid); } } context.RewritePath(url); } public void Dispose() { } public class AppendSIDFilter : Stream { private Stream Sink { get; set; } private long _position; private System.Text.StringBuilder oOutput = new StringBuilder(); public AppendSIDFilter(Stream sink) { Sink = sink; } public override bool CanRead { get { return true; } } public override bool CanSeek { get { return true; } } public override bool CanWrite { get { return true; } } public override long Length { get { return 0; } } public override long Position { get { return _position; } set { _position = value; } } public override long Seek(long offset, System.IO.SeekOrigin direction) { return Sink.Seek(offset, direction); } public override void SetLength(long length) { Sink.SetLength(length); } public override void Close() { Sink.Close(); } public override void Flush() { Sink.Flush(); } public override int Read(byte[] buffer, int offset, int count) { return Sink.Read(buffer, offset, count); } public override void Write(byte[] buffer, int offset, int count) { if (string.IsNullOrEmpty(HttpContext.Current.Request["cid"])) { Sink.Write(buffer, 0, buffer.Length); return; } string cOntent= System.Text.UTF8Encoding.UTF8.GetString(buffer, offset, count); Regex regex = new Regex(RegexResource.HREF, RegexOptions.IgnoreCase); Regex action_regex = new Regex(RegexResource.ACTION, RegexOptions.IgnoreCase); if (regex.IsMatch(content)) { cOntent= Regex.Replace(content, RegexResource.HREF, new MatchEvaluator(ReplaceSID), RegexOptions.Compiled | RegexOptions.IgnoreCase); } if (action_regex.IsMatch(content)) { cOntent= Regex.Replace(content, RegexResource.ACTION, new MatchEvaluator(ReplaceSID), RegexOptions.Compiled | RegexOptions.IgnoreCase); } byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(content); Sink.Write(data, 0, data.Length); } public static string ReplaceSID(Match match) { if (match.Value.IndexOf("cid=") != -1) { return match.Value; } string result; if (match.Value.IndexOf('?') == -1) { result = match.Value.Insert(match.Value.Length - 1, "?cid=" + HttpContext.Current.Request["cid"]); } else { result = match.Value.Insert(match.Value.Length - 1, "&cid=" + HttpContext.Current.Request["cid"]); } return result; } } } }
推荐阅读
前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ...
[详细]
蜡笔小新 2023-12-13 09:34:59
本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ...
[详细]
蜡笔小新 2023-12-10 23:11:57
本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ...
[详细]
蜡笔小新 2023-12-14 16:35:39
本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ...
[详细]
蜡笔小新 2023-12-14 07:44:06
本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ...
[详细]
蜡笔小新 2023-12-13 15:15:30
本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ...
[详细]
蜡笔小新 2023-12-13 14:17:11
本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ...
[详细]
蜡笔小新 2023-12-12 15:52:48
先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ...
[详细]
蜡笔小新 2023-12-12 13:36:56
This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ...
[详细]
蜡笔小新 2023-12-12 10:13:35
本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ...
[详细]
蜡笔小新 2023-12-10 22:17:08
Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ...
[详细]
蜡笔小新 2023-12-09 20:10:11
本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ...
[详细]
蜡笔小新 2023-12-09 19:26:56
本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ...
[详细]
蜡笔小新 2023-12-12 17:37:32
本文介绍了一个误删Oracle数据文件导致数据库无法打开的问题,并提供了解决方式。解决方式包括切换到mount状态、离线删除报错的数据文件等。 ...
[详细]
蜡笔小新 2023-12-11 18:15:52
前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ...
[详细]
蜡笔小新 2023-12-11 12:31:00