另类的动态加载用户控件

2015-08-24 05:04:39

在BS架构这块,我们平时建一个网站,通常是创建一个WebSite网站,或者是创建一个WebApplication.然后在WEB项目里面建立相应的aspx文件,以及用户控件,自定义控件等等.但是做为一个新加入此项目的你要去修改里面的

某一个功能模板,那么我一般的程序是这样的:

第一:根据新的需求,在项目找到相关页面,例如对应的页面URL为index.aspx.此时可以对原页面做最初的了解.

第二:分析代码.

第三:根据新的需求来修改代码.

我想这也是一般朋友的思维模式吧.可是这样的流程并不是统一不变的,至于如何变化,我先想和园友们讨论一下如下的需求大家是如何实现的?

网站可能有多个版本,例如最起码的中英日版,各版本的内容呈现风格上也略有不同.

本人列举三个本人想到的做法:

第一种方法:每个版本单独建一个站点.具体要求具体实现.这种做法的缺点是维护困难,成本高.

第二种方法:建一个站点,为每个版本的同一个功能页面分别创建单独的页面.例如一个显示新闻的页面,分别为:中文新闻.aspx,英文新闻.aspx等.这种方法的缺点同上,只不过稍微会容易点.

第三种方法:建一个站点,一个功能就建一个页面,但为不同版本创建不同的用户控件,根据相应的参数为动态加载控件.这种做法是最优的.(个人认为)这做做法的缺点是程序的耦合度太强,如果是要增加一个版本,那么就要修改功能页面.

其实上面的第三种方法一般来说是可以解决问题的.后来在新的项目中发现了httpHandler的应用,可以自定义的捕捉到http请求.发现了一个全新的解决方案.

IHttpHandlerFactory在.net中算是用处比较多的。它能够在Hander对象生成前对当前页面的Hander进行预处理。一般我们如果是做URL重写的话,也会用到httphandler,现在可以利用它来实现我上面的需求.

网站呢,就建一个页面webform2.aspx.在这个页面中根据请求的URL来动态加载用户控件.而这个动态加载程序并不是写在webform2中的pageload事件中.而是写的页面的AddParsedSubObject事件中.当用户访问别外一个页面,例如一个搜索页search.aspx,此时站中并不实际存在这个页面.而是利用httphandler来捕获这个HTTP请求,定向于已经实际存在的webform2.aspx页面,在webform2.aspx页面中的AddParsedSubObject事件中完成搜索控件的加载.

第一:如何来自定义的来捕获HTTP请求呢?

1:建立一个实现了接口IHttpHandlerFactory的类.

IHttpHandlerFactory 类型公开了以下成员。

方法 :

GetHandler返回实现 IHttpHandler 接口的类的实例。

ReleaseHandler使工厂可以重用现有的处理程序实例。

Code

public class WebPageHandlerFactory : IHttpHandlerFactory
{
public virtual IHttpHandler GetHandler(HttpContext context, string requestType, string url, string path)
{
if (IsExistedPage(path))
{
return PageParser.GetCompiledPageInstance(url, path, context);
}
if (!path.ToLower().EndsWith(".aspx"))
{
path = Path.Combine(path, "webform2.aspx");
}
url = ReplaceUrl(url);
path = ReplaceUrl(path);
return PageParser.GetCompiledPageInstance(url, path, context);
}
/**////


/// 判断当前请求的URL是否真实存在
///

/// 请求URL的相对路径
///
private bool IsExistedPage(string path)
{
//首页是已经存在的
if (path.ToLower().IndexOf("webform2.aspx") > 0)
{
return true;
}
return false;
}
/**////
/// 把实际不存在的页面名称转换成已经真实存在的default.aspx
/// 例如:default2.aspx实际不存在,则把default2.aspx转换成default.aspx
///

/// 当前请求的但实际并不存在的URL 例如:default2.aspx
///
private string ReplaceUrl(string input)
{
// Regex search and replace
RegexOptions options = RegexOptions.None;
Regex regex = new Regex(@"w+.aspx", options);
string replacement = @"webform2.aspx";
string result = regex.Replace(input, replacement);
return result;
}
public virtual void ReleaseHandler(IHttpHandler handler)
{
}
}

紧急通告!新冠确诊病例2名密接者曾乘列车途经安徽!

紧急通告!新冠确诊病例2名密接者曾乘列车途经安徽!

山东省济宁市微山县发布紧急通告,寻找2名密接者的密接者。通告显示2名密接者所乘Z274次列车途经安徽车站。

2021-09-12
全额退款!盒马道歉了!黑刺榴莲被指货不对板

全额退款!盒马道歉了!黑刺榴莲被指货不对板

近日,有博主发文称,盒马APP销售的黑刺榴莲货不对板,宣传时用的是黑刺榴莲D200的信息和图片,实际发货却是D13榴莲,两者差价高达三倍,博主几次与盒马客服沟通未果。对此,盒马官方微博9月9日发文道歉:

2021-09-12
二代疫苗离上市还有多远?一代还有效吗?速看

二代疫苗离上市还有多远?一代还有效吗?速看

9月7日的国务院联防联控机制发布会上,释放出一个重要信息,包括国药在内的研发企业和团队,已经在开展第二代新冠疫苗研发、专门针对变异病毒,同时也有治疗新冠肺炎方面的特效药推出。

2021-09-12
警方通报15岁男孩校内被殴打致死:嫌疑人被控制

警方通报15岁男孩校内被殴打致死:嫌疑人被控制

江苏省连云港市东海县公安局官方微信10日通报,9月9日13时53分,连云港市东海县公安局110报警服务台接报警称:东海县中等专业学校有2名学生打架,其中1人受伤。接警后,警方迅速派员赶赴现场处置,会同120急救人员将伤者张某(男,15岁,学生) 送往医院救治,同时将犯罪嫌疑人平某(男,15岁,学生)控制。

2021-09-12
31省区市新增确诊病例25例 其中1例本土病例在福建

31省区市新增确诊病例25例 其中1例本土病例在福建

9月10日0—24时,31个省(自治区、直辖市)和新疆生产建设兵团报告新增确诊病例25例。其中境外输入病例24例(云南13例,河南3例,上海2例,福建2例,广东2例,山西1例,四川1例),含5例由无症状感染者转为确诊病例(河南2例,广东2例,四川1例);本土病例1例(在福建莆田市)。无新增死亡病例。新增疑似病例2例,均为境外输入病例(均在上海)。

2021-09-12
凌晨!大连一住户家发生液化气罐泄漏并爆炸致8死5伤

凌晨!大连一住户家发生液化气罐泄漏并爆炸致8死5伤

大连市普兰店区一住户家中发生爆燃 造成8人死亡5人受伤。9月11日0时许,大连市普兰店区一住户家中液化气罐泄漏并引发爆炸。事故发生后,消防、公安、住建等部门及属地单位立即临场开展应急处置工作。2时30分许火被扑灭。截至4时30分许,事故致8人死亡,另有5人受伤在医院救治,暂无生命危险。

2021-09-12
痛心!成都地铁17号线在建工地垮塌致4死14伤

痛心!成都地铁17号线在建工地垮塌致4死14伤

据@成都地铁消息,2021年 9月10日14时01分,中国铁建股份有限公司、中铁十一局集团有限公司联合体承建的成都轨道交通17号线二期工程建设北路站在搭建地面防尘降噪棚时,部分棚网架发生垮塌。事故造成18人受伤,其中4人经抢救无效死亡,14人正在医院接受救治

2021-09-12
福建6人核酸阳性!3名小学生3名家长!病例详情公布

福建6人核酸阳性!3名小学生3名家长!病例详情公布

9月10日晚上,福建省莆田市召开新闻发布会,介绍疫情防控最新情况。发布会上通报,2021年9月10日,福建莆田市在对仙游县枫亭镇一小学在校学生新冠病毒核酸检测时,发现2名学生(为亲兄弟)核酸检测结果呈阳性,立即扩大核酸采样又发现4人(1名学生和3名家长)核酸检测结果呈阳性。截至9月10日18时,共发现6人检测结果呈阳性。

2021-09-12
货拉拉女乘客坠亡案司机获刑1年:犯过失致人死亡罪

货拉拉女乘客坠亡案司机获刑1年:犯过失致人死亡罪

9月10日,长沙市岳麓区人民法院对岳麓区人民检察院指控被告人周阳春犯过失致人死亡罪一案进行公开开庭审理并当庭宣判,认定被告人周阳春犯过失致人死亡罪,判处有期徒刑一年,缓刑一年。

2021-09-12
感情不顺!女大学生站阳台上欲跳楼消防员飞脚踢回

感情不顺!女大学生站阳台上欲跳楼消防员飞脚踢回

9月6日,四川绵阳,一女大学生因感情不顺,站上学校6楼宿舍阳台欲跳楼轻生。消防员从宿舍楼顶索降,一脚将其踹回屋内。楼下围观群众一片掌声!提醒:生命只有一次,请你珍惜。

2021-09-11
长途“旅行”结束!北移亚洲象群完全进入传统栖息地

长途“旅行”结束!北移亚洲象群完全进入传统栖息地

总台记者从云南北移亚洲象群安全防范省级指挥部获悉,9月10日1时,北移亚洲象安全渡过湍急的把边江,从普洱市墨江县进入普洱市宁洱县境内。

2021-09-11
男子偷亲女同事被开除起诉单位赔钱!法院这样判……

男子偷亲女同事被开除起诉单位赔钱!法院这样判……

在职场工作中难免要与异性接触,性骚扰成了一个难以绕开的话题,如何认定职场性骚扰?用人单位能否以“劳动者存在性骚扰行为”为由单方解除劳动合同?近日,高淳法院审理了一起因职场骚扰而被解除合同的劳动争议案件,被解雇员工要求公司支付赔偿金被驳回。

2021-09-11
突发!司机突发脑溢血!车辆失控致5人伤!

突发!司机突发脑溢血!车辆失控致5人伤!

陕西咸阳交警刚刚通报:9月9日下午18时左右,陕西咸阳市秦都区团结路北口,发生一起交通事故,致5人受伤(含驾驶人),交警部门接到报警后,第一时间赶赴现场进行处置。经省市医疗专家会诊,法医学司法鉴定,公安机关调查取证,事故因驾驶人陈某突发脑溢血,车辆失控造成。目前,受伤人员正在全力救治之中。

2021-09-11
小学生被老师砍伤?最新通报:教师被停职!警方已介入!

小学生被老师砍伤?最新通报:教师被停职!警方已介入!

据“龙泉教育”微信公众号消息,针对网传“一小学生因字没写好被老师用刀砍手”事件,浙江省龙泉市教育局9月9日发布情况通报。9月8日,龙泉市锦溪小学发生一起因教师不当教育行为致学生受伤事件,事件发生后,该教师当即将学生送往医院医治同时告知家长。教育局、公安机关第一时间介入调查处置,安排人员到医院探望,鉴于该教师教育行为失当,教育局党委连夜召开会议,对该教师作出停职检查处理。目前,该事件公安机关正在调查取证中,调查结果将适时公布,望广大群众不信谣,不传谣!

2021-09-11
劳荣枝身负7条人命被判死刑!哭诉一辈子没杀过一只鸡鸭

劳荣枝身负7条人命被判死刑!哭诉一辈子没杀过一只鸡鸭

9日,江西省南昌市中级人民法院依法对被告人劳荣枝故意杀人、抢劫、绑架案进行一审公开宣判。以被告人劳荣枝犯故意杀人罪、抢劫罪、绑架罪,数罪并罚,决定执行死刑,剥夺政治权利终身,并处没收个人全部财产。

2021-09-11
惊了!快递柜里有哭声竟然“取”出了一个男孩!

惊了!快递柜里有哭声竟然“取”出了一个男孩!

9月5日傍晚,浙江温州市龙湾区某公寓楼下的快递柜里,传出了小男孩的哭声。快递柜里怎么会有孩子呢?有人立刻报了警。几分钟后,消防员就赶到了现场。消防队员立即用撬棍对快递柜门进行破拆,半分钟不到,柜门就被撬开了,里面的小男孩立马爬了出来,“他的头是朝外的,关在里面这一下子,全身都是汗了。”

2021-09-11
警方通报:女子体验娱乐项目坠亡 3名经营者被拘

警方通报:女子体验娱乐项目坠亡 3名经营者被拘

深圳市公安局大鹏分局官方微博9月9日发布情况通报:深圳一女游客在较场尾海域体验“飞鱼”娱乐项目期间不慎掉落海中失踪,警方找到后已无生命体征。目前,项目经营者黄某、丁某、易某已被警方刑事拘留。

2021-09-11
中国疾控中心:我国已完成德尔塔变异株灭活疫苗临床前研究

中国疾控中心:我国已完成德尔塔变异株灭活疫苗临床前研究

记者9日从中国疾控中心获悉,我国已完成针对德尔塔变异株的灭活疫苗的临床前研究。中国疾病预防控制中心生物安全首席专家 武桂珍:我们从广东、上海、北京等输入疫情比较多的临床样本中,成功分离到了一些多株的德尔塔毒株。通过连续三代的克隆纯化,并初步完成了疫苗毒株选育与鉴定以及三级种子库的建立,现在已经从实验室进入生产车间规模化生产前的准备。

2021-09-11
9月9日31省区市新增境外输入确诊病例17例 分别在这7个省市

9月9日31省区市新增境外输入确诊病例17例 分别在这7个省市

9月9日0—24时,31个省(自治区、直辖市)和新疆生产建设兵团报告新增确诊病例17例,均为境外输入病例(广东5例,上海4例,云南4例,江苏1例,福建1例,山东1例,广西1例),含1例由无症状感染者转为确诊病例(在福建)。无新增死亡病例。新增疑似病例1例,为境外输入病例(在上海)。

2021-09-11
拉响警报!“超强台风”来袭!“双台风”周末或影响这些地方

拉响警报!“超强台风”来袭!“双台风”周末或影响这些地方

通常,我们把6月至8月生成的台风称为“夏台风”,9月至11月生成的台风称为“秋台风”。从登陆我国的情况来看,秋台风的影响力不容小觑。1949年至2020年数据显示,平均每年夏季约有4.43个台风登陆我国,是台风登陆我国最多的季节;而每年秋季平均有2.36个台风登陆我国,为台风第二活跃的季节;而每年春季和冬季的台风平均登陆个数仅不足0.2个。

2021-09-11

紧急通告!新冠确诊病例2名密接者曾乘列车途经安徽!

山东省济宁市微山县发布紧急通告,寻找2名密接者的密接者。通告显示2名密接者所乘Z274次列车途经安徽车站。

紧急通告!新冠确诊病例2名密接者曾乘列车途经安徽!

全额退款!盒马道歉了!黑刺榴莲被指货不对板

近日,有博主发文称,盒马APP销售的黑刺榴莲货不对板,宣传时用的是黑刺榴莲D200的信息和图片,实际发货却是D13榴莲,两者差价高达三倍,博主几次与盒马客服沟通未果。对此,盒马官方微博9月9日发文道歉:

全额退款!盒马道歉了!黑刺榴莲被指货不对板

二代疫苗离上市还有多远?一代还有效吗?速看

9月7日的国务院联防联控机制发布会上,释放出一个重要信息,包括国药在内的研发企业和团队,已经在开展第二代新冠疫苗研发、专门针对变异病毒,同时也有治疗新冠肺炎方面的特效药推出。

二代疫苗离上市还有多远?一代还有效吗?速看

警方通报15岁男孩校内被殴打致死:嫌疑人被控制

江苏省连云港市东海县公安局官方微信10日通报,9月9日13时53分,连云港市东海县公安局110报警服务台接报警称:东海县中等专业学校有2名学生打架,其中1人受伤。接警后,警方迅速派员赶赴现场处置,会同120急救人员将伤者张某(男,15岁,学生) 送往医院救治,同时将犯罪嫌疑人平某(男,15岁,学生)控制。

警方通报15岁男孩校内被殴打致死:嫌疑人被控制

31省区市新增确诊病例25例 其中1例本土病例在福建

9月10日0—24时,31个省(自治区、直辖市)和新疆生产建设兵团报告新增确诊病例25例。其中境外输入病例24例(云南13例,河南3例,上海2例,福建2例,广东2例,山西1例,四川1例),含5例由无症状感染者转为确诊病例(河南2例,广东2例,四川1例);本土病例1例(在福建莆田市)。无新增死亡病例。新增疑似病例2例,均为境外输入病例(均在上海)。

31省区市新增确诊病例25例 其中1例本土病例在福建

凌晨!大连一住户家发生液化气罐泄漏并爆炸致8死5伤

大连市普兰店区一住户家中发生爆燃 造成8人死亡5人受伤。9月11日0时许,大连市普兰店区一住户家中液化气罐泄漏并引发爆炸。事故发生后,消防、公安、住建等部门及属地单位立即临场开展应急处置工作。2时30分许火被扑灭。截至4时30分许,事故致8人死亡,另有5人受伤在医院救治,暂无生命危险。

凌晨!大连一住户家发生液化气罐泄漏并爆炸致8死5伤

痛心!成都地铁17号线在建工地垮塌致4死14伤

据@成都地铁消息,2021年 9月10日14时01分,中国铁建股份有限公司、中铁十一局集团有限公司联合体承建的成都轨道交通17号线二期工程建设北路站在搭建地面防尘降噪棚时,部分棚网架发生垮塌。事故造成18人受伤,其中4人经抢救无效死亡,14人正在医院接受救治

痛心!成都地铁17号线在建工地垮塌致4死14伤

福建6人核酸阳性!3名小学生3名家长!病例详情公布

9月10日晚上,福建省莆田市召开新闻发布会,介绍疫情防控最新情况。发布会上通报,2021年9月10日,福建莆田市在对仙游县枫亭镇一小学在校学生新冠病毒核酸检测时,发现2名学生(为亲兄弟)核酸检测结果呈阳性,立即扩大核酸采样又发现4人(1名学生和3名家长)核酸检测结果呈阳性。截至9月10日18时,共发现6人检测结果呈阳性。

福建6人核酸阳性!3名小学生3名家长!病例详情公布

货拉拉女乘客坠亡案司机获刑1年:犯过失致人死亡罪

9月10日,长沙市岳麓区人民法院对岳麓区人民检察院指控被告人周阳春犯过失致人死亡罪一案进行公开开庭审理并当庭宣判,认定被告人周阳春犯过失致人死亡罪,判处有期徒刑一年,缓刑一年。

货拉拉女乘客坠亡案司机获刑1年:犯过失致人死亡罪

感情不顺!女大学生站阳台上欲跳楼消防员飞脚踢回

9月6日,四川绵阳,一女大学生因感情不顺,站上学校6楼宿舍阳台欲跳楼轻生。消防员从宿舍楼顶索降,一脚将其踹回屋内。楼下围观群众一片掌声!提醒:生命只有一次,请你珍惜。

感情不顺!女大学生站阳台上欲跳楼消防员飞脚踢回

长途“旅行”结束!北移亚洲象群完全进入传统栖息地

总台记者从云南北移亚洲象群安全防范省级指挥部获悉,9月10日1时,北移亚洲象安全渡过湍急的把边江,从普洱市墨江县进入普洱市宁洱县境内。

长途“旅行”结束!北移亚洲象群完全进入传统栖息地

男子偷亲女同事被开除起诉单位赔钱!法院这样判……

在职场工作中难免要与异性接触,性骚扰成了一个难以绕开的话题,如何认定职场性骚扰?用人单位能否以“劳动者存在性骚扰行为”为由单方解除劳动合同?近日,高淳法院审理了一起因职场骚扰而被解除合同的劳动争议案件,被解雇员工要求公司支付赔偿金被驳回。

男子偷亲女同事被开除起诉单位赔钱!法院这样判……

突发!司机突发脑溢血!车辆失控致5人伤!

陕西咸阳交警刚刚通报:9月9日下午18时左右,陕西咸阳市秦都区团结路北口,发生一起交通事故,致5人受伤(含驾驶人),交警部门接到报警后,第一时间赶赴现场进行处置。经省市医疗专家会诊,法医学司法鉴定,公安机关调查取证,事故因驾驶人陈某突发脑溢血,车辆失控造成。目前,受伤人员正在全力救治之中。

突发!司机突发脑溢血!车辆失控致5人伤!

小学生被老师砍伤?最新通报:教师被停职!警方已介入!

据“龙泉教育”微信公众号消息,针对网传“一小学生因字没写好被老师用刀砍手”事件,浙江省龙泉市教育局9月9日发布情况通报。9月8日,龙泉市锦溪小学发生一起因教师不当教育行为致学生受伤事件,事件发生后,该教师当即将学生送往医院医治同时告知家长。教育局、公安机关第一时间介入调查处置,安排人员到医院探望,鉴于该教师教育行为失当,教育局党委连夜召开会议,对该教师作出停职检查处理。目前,该事件公安机关正在调查取证中,调查结果将适时公布,望广大群众不信谣,不传谣!

小学生被老师砍伤?最新通报:教师被停职!警方已介入!

劳荣枝身负7条人命被判死刑!哭诉一辈子没杀过一只鸡鸭

9日,江西省南昌市中级人民法院依法对被告人劳荣枝故意杀人、抢劫、绑架案进行一审公开宣判。以被告人劳荣枝犯故意杀人罪、抢劫罪、绑架罪,数罪并罚,决定执行死刑,剥夺政治权利终身,并处没收个人全部财产。

劳荣枝身负7条人命被判死刑!哭诉一辈子没杀过一只鸡鸭

惊了!快递柜里有哭声竟然“取”出了一个男孩!

9月5日傍晚,浙江温州市龙湾区某公寓楼下的快递柜里,传出了小男孩的哭声。快递柜里怎么会有孩子呢?有人立刻报了警。几分钟后,消防员就赶到了现场。消防队员立即用撬棍对快递柜门进行破拆,半分钟不到,柜门就被撬开了,里面的小男孩立马爬了出来,“他的头是朝外的,关在里面这一下子,全身都是汗了。”

惊了!快递柜里有哭声竟然“取”出了一个男孩!

警方通报:女子体验娱乐项目坠亡 3名经营者被拘

深圳市公安局大鹏分局官方微博9月9日发布情况通报:深圳一女游客在较场尾海域体验“飞鱼”娱乐项目期间不慎掉落海中失踪,警方找到后已无生命体征。目前,项目经营者黄某、丁某、易某已被警方刑事拘留。

警方通报:女子体验娱乐项目坠亡 3名经营者被拘

中国疾控中心:我国已完成德尔塔变异株灭活疫苗临床前研究

记者9日从中国疾控中心获悉,我国已完成针对德尔塔变异株的灭活疫苗的临床前研究。中国疾病预防控制中心生物安全首席专家 武桂珍:我们从广东、上海、北京等输入疫情比较多的临床样本中,成功分离到了一些多株的德尔塔毒株。通过连续三代的克隆纯化,并初步完成了疫苗毒株选育与鉴定以及三级种子库的建立,现在已经从实验室进入生产车间规模化生产前的准备。

中国疾控中心:我国已完成德尔塔变异株灭活疫苗临床前研究

9月9日31省区市新增境外输入确诊病例17例 分别在这7个省市

9月9日0—24时,31个省(自治区、直辖市)和新疆生产建设兵团报告新增确诊病例17例,均为境外输入病例(广东5例,上海4例,云南4例,江苏1例,福建1例,山东1例,广西1例),含1例由无症状感染者转为确诊病例(在福建)。无新增死亡病例。新增疑似病例1例,为境外输入病例(在上海)。

9月9日31省区市新增境外输入确诊病例17例 分别在这7个省市

拉响警报!“超强台风”来袭!“双台风”周末或影响这些地方

通常,我们把6月至8月生成的台风称为“夏台风”,9月至11月生成的台风称为“秋台风”。从登陆我国的情况来看,秋台风的影响力不容小觑。1949年至2020年数据显示,平均每年夏季约有4.43个台风登陆我国,是台风登陆我国最多的季节;而每年秋季平均有2.36个台风登陆我国,为台风第二活跃的季节;而每年春季和冬季的台风平均登陆个数仅不足0.2个。

拉响警报!“超强台风”来袭!“双台风”周末或影响这些地方