httpmodule,JS打印
在web系统中就最简单了﹐只要做一个访问的url和功能的对应关系﹐然后利用一个httpmodule在每次request时﹐先把url转换成功能﹐然后再调用上述权限判断方法﹐返回true就进﹐false就转向错误页面。
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// HelloWorldModule 的摘要说明
/// </summary>
public class HelloWorldModule : IHttpModule
{
public HelloWorldModule()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
string str = "";
public String ModuleName
{
get { return "HelloWorldModule"; }
}
public void Init(HttpApplication application)
{
//注册页面请求开始和结束事件
application.BeginRequest +=
(new EventHandler(this.Application_BeginRequest));
application.EndRequest +=
(new EventHandler(this.Application_EndRequest));
}
private void Application_BeginRequest(Object source, EventArgs e)
{
//在页面开始请求前写入一段文字
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write(@"<h1><font color=red>
HelloWorldModule: Beginning of Request
</font></h1><hr>"+
application.Request.QueryString.Count.ToString());
}
private void Application_EndRequest(Object source, EventArgs e)
{
//页面请求结束后写入一段文字
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write(@"<hr><h1><font color=red>HelloWorldModule: End of Request</font></h1>");
}
public void Dispose()
{
}
}
在web.config增加下面配置:
<httpModules>
<add name="HelloWorldModule" type="HelloWorldModule"/>
</httpModules>
handler 防盗链、快速轻量级的页面
module 登陆验证、防刷新。。。
首先在网页中添加:
<OBJECT id="WebBrowser" height="0" width="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"
VIEWASTEXT>
</OBJECT>
然后就可以依次加入功能按钮了:
<input onclick="document.all.WebBrowser.ExecWB(6,1)" type="button" value="打印"> <input onclick="document.all.WebBrowser.ExecWB(6,6)" type="button" value="直接打印">
<input onclick="document.all.WebBrowser.ExecWB(8,1)" type="button" value="页面设置">
<input onclick="document.all.WebBrowser.ExecWB(7,1)" type="button" value="打印预览"> <INPUT type="button" value="关闭窗口" onclick="javascript:window.close()">
将这两块东西放到<center class=noprint></center>就不会打印这些按钮了。当然要定义noprint了:
<style media="print">.Noprint { DISPLAY: none }</style>只要把不想打印的东西的css设置成noprint就可以了。
现在就实现了基本的web打印,需要注意的情况如下:
必须将ie的internet选项的安全设置中对于没有标记为安全的ActiveX控件进行...设置成提示或者启用,否则会报错,导致不可用。
如果在vs.net编辑环境下编辑该页面,它经常自动的给object添加多余的参数,有了这些东西,打印就会出错,所以要记得最后保存的时候删除它们。
为了简便并且达到最好的效果,我们可以在一个页面实现编辑和打印,这时候会需要很多的textbox,我们把它的css设置成.edittext
{
overflow-y:visible;
width: 100%;
border-top: none;
border-right: none;
border-bottom: none;
border-left: none;
}就可以实现在打印的时候不显示边框和multiline的textbox不显示滚动条了。
还有一些小经验就是在设置标格宽度的时候,对于A4纸张,横打用920,竖打用640,效果最好。