当使用asp.net控件时,有时需要在web.config文件中增加相应的配置项,比如一个配置节或者HttpModule或者在 appsettings中增加一个键值对等等,如果控件能够自动配置,无疑将会给用户带来一定的便利。那么如何在开发控件的过程中,加入自动配置 web.config的功能呢?
在AntarDev.ProgressBar控件的使用中,需要对web.config进行配置,增加一个HttpModule,在第一个版本 的时候,时需要进行手工配置的,在后续版本的设计中,就加入了自动配置功能。自动配置功能实际上就是执行一段代码,对Web.config进行操作,关于 这段代码的位置,应该符合不能给控件的运行带来太大负担的原则。
首先假设放到运行时代码中,当HttpModule不存在时则修改web.config并保存,注意:当运行时修改web.config会导致应用程序重新启动的,并且每次运行都检测,也不合适。
假设放到设计时代码中,就没有这个问题。将该代码加入到设计时代码中。检测web.config中是否正确的配置了HttpModule,如果 没有配置,则自动增加。同时在设计时代码中的检测,决定了如果在使用控件的时候,没有使用IDE,直接通过编写代码来使用控件的话,HttpModule 还是需要自己配置的。但是在设计时代码中做检测的方法,对于大部分的开发人员来讲,是比较方便和适用的。
来看主要代码:
private void HttpModuleConfig()
{
IWebApplication webapp = (IWebApplication)Component.Site.GetService(typeof(IWebApplication));
System.Configuration.Configuration cf = webapp.OpenWebConfiguration(false);
System.Web.Configuration.HttpModulesSection hts = cf.GetSection("system.web/httpModules") as System.Web.Configuration.HttpModulesSection;
bool flag = false;
for (int i = 0; i < hts.Modules.Count; i++)
{
if (hts.Modules[i].Type.ToLower() == "AntarDev.ProgressBarHttpModule".ToLower())
{
flag = true;
break;
}
}
if (!flag)
{
hts.Modules.Add(new HttpModuleAction("AntarDev.ProgressBar", "AntarDev.ProgressBarHttpModule"));
cf.Save();
}
}
关键代码在前两句:
Component.Site.GetService(typeof(IWebApplication))获取一个 IWebApplication接口,该接口“提供用于在设计时访问设计宿主(如 Microsoft Visual Studio 2005)中的 Web 应用程序的接口。”,也就是说,通过该接口能够获取配置信息和项目信息等。
webapp.OpenWebConfiguration(false);打开配置文件准备编辑(MSDN解释有些错误)。
下面就是获取HttpModules列表,并判断是否存在指定的HttpModule了,如果没有就添加并保存。
原文地址:http://www.antardev.cn/showArticle.aspx?id=107 转载请注明出处
AntarDev ProgressBar 进度条控件新版发布预告
AntarDev ProgressBar是用于asp.net的进度条,在日常asp.net开发过程中,经常会遇到需要一个进度条来表示实时进度的情况,比如一个较长时 间的后台任务。但是微软又没有提供一个官方的进度条控件。通常我们都会想到使用AJAX,也就是XMLHTTP在浏览器后台访问服务器上的一个页面来获取 实时进度,这也是本进度条控件的基本原理。在实现基本功能的基础上,为了方便用户使用,AntarDev ProgressBar封装为DLL,可以作为asp.net服务器控件,直接加入到VS开发工具的工具栏中。同时AntarDev ProgressBar具有以下特点,能够有效的完成asp.net任务进度的显示。
一.前台进度显示
◆通过Minimum,Maximum设置进度条数值的范围,通过Value设置当前进度,或者直接使用Percentage属性以百分比的形式来设置进度。
◆通过Interval属性,设置进度条的前台刷新间隔。
◆进度文本可以设置为格式字符串的形式,比如{1}代表当前百分比。
二.后台进度更新
◆普通的后台进度更新,跟平常的控件调用一致,使用控件的ID表示进度条对象,并通过其属性进行设置。
◆能够支持在同一个应用程序的其他页面或者执行代码中,对进度条进度进行更新。
三.进度条行为特性
◆通过设定AutoHidden属性,决定进度条在没有更新动作或者停止的状态下,是否自动隐藏。
◆通过设定AutoBegin属性,决定进度条是否在页面加载进度条之后,就自动开始从服务器获取进度。
◆通过设定FullAutoComplete属性,决定进度条在进度值达到100%时,是否自动停止,不再从服务器获取进度。
◆通过设定BeginFromZero属性,决定进度条在刚加载到页面时,进度值是否为0,而不受Value初始设置的影响。
四.样式特性
◆进度条方向可以是常见的水平方向,也可以是垂直方向(IE5.5+/Firefox3.1+)。
◆可以选择进度条文本是位于进度条内部还是外部。
◆文本的字体对齐等样式都可以自定义。
◆可以设置进度条的前景背景颜色和图片,从而达到更好的视觉效果。
◆自带16套官方样式,满足日常需要。
五.客户端脚本对象支持
◆假如asp.net页面中有个ID为ProgressBar1的进度条对象,在前台页面的JavaScript脚本中同样可以使用ProgressBar1来获取进度条的引用,从而对进度条对象进行操作。
◆能够设定当进度条在浏览器段遇到异常时/完成时/刷新进度时要执行的JavaScript脚本,方便功能扩展。
六.丰富的VS设计时支持
◆控件在VS设计界面中拥有完备的设计时支持,能够快捷的设置相关属性,实现自动套用样式等常见任务。
原文地址:http://www.antardev.cn/showArticle.aspx?id=101
摘要: ASP.NET2.0中创建自定义配置节处理程序(声明性模型)原文地址:http://www.antardev.cn/showarticle.aspx?id=44 在asp.net中,配置数据存储在web.config文件中。该文件使用xml来表示数据,所有的配置信息都位于<configuration>和</configuration>根xml标记之间。这里的配置信息分为两...
阅读全文
Aptana是一款优秀的WEB开发工具
其强大的js提示功能给我们提供了极大的方便
不过他也并非完美,使用过程中,还是发现他有许多地方需要完善
以前遇到过一个js脚本无法格式化的问题
今天又碰到一个错误的CSS提示问题
Firefox中
有个关于半透明的属性MozOpacity,对应于IE中的filter属性
在Aptana中提示,首字母是小写的,这……如果JS是大小写不敏感的也就罢了,可以他不是
在使用该IDE时,请务必注意
摘要: 本控件使用XMLHTTP组件在浏览器端异步请求进度条实时数据,同时由特定的Http Module进行快速响应,不会因为用户的高负载操作而轻易失去响应,或者阻塞。可以根据不同的使用场景对进度条进行适当调整以完成实时进度显示任务。
与以前的版本相比,改进的地方很多。
1. 自动配置Web.Config,无需手工添加Http模块的引用。
2. 增加了百分比属性,方便设置进度。
3. 发布的程序集附带XML注释,可以有效利用智能感知,方便代码编写。
4. 改变了以往用静态方法设置进度条属性的设计,增加了ProgressBarController控制类,可以方便的连接到进度条,并进行进度设置等任务。
5. 进度条页面和设置进度条的方法之间,使用进度条唯一标识SN进行通信,只要掌握了SN,不论在什么地方,都可以通过ProgressBarController类连接到进度条,进行操作。
6. 增加了服务端的Begin方法。
7. 修正了几个小bUG。
阅读全文