zoukankan
html css js c++ java
增强XmlSiteMapProvider功能
上篇随笔
所述的方法可以指定SiteMapPath控件使用指定目录,指定文件名的sitemap文件。但是如果遇到Transfer的页面或者带查询的页面参数时,内置的功能可能不能满足你的要求了,这时可以编写自已的Provider来实现,如下我编写一个JobXmlSiteMapProvider类,它继承于XmlSiteMapProvider类,其中须重写BuildSiteMap()方法,还有就是通过修改传入rawUrl来增强其适应Transfer的能力。
public
class
JobXmlSiteMapProvider : XmlSiteMapProvider
{
public
override
SiteMapNode BuildSiteMap()
{
return
base
.BuildSiteMap();
}
public
override
SiteMapNode FindSiteMapNode(
string
rawUrl)
{
//
针对Transfer页面进行优化
rawUrl
=
OptimizeTransferViewJob(rawUrl);
rawUrl
=
OptimizeTransferViewCompany(rawUrl);
return
base
.FindSiteMapNode(rawUrl);
}
public
override
SiteMapNode FindSiteMapNodeFromKey(
string
key)
{
return
base
.FindSiteMapNodeFromKey(key);
}
/**/
///
<summary>
///
针对Transfer ViewJob.aspx页面进行优化
///
</summary>
private
string
OptimizeTransferViewJob(
string
rawUrl)
{
HttpContext context
=
HttpContext.Current;
string
urlToTransfer
=
context.Request.RawUrl;
string
match
=
@"
jobs\/([a-fA-F0-9]{32}|([a-fA-F0-9]{8})-([a-fA-F0-9]{4})-([a-fA-F0-9]{4})-([a-fA-F0-9]{4})-([a-fA-F0-9]{12}))\/viewjob.aspx
"
;
//
string replace = "Con001_ProjectManage/Job/viewjob.aspx?id=$1";
//
解决大小写问题
urlToTransfer
=
urlToTransfer.ToLower();
match
=
match.ToLower();
string
matchExpression
=
Globals.GetApplicationPath()
+
match;
Regex regEx
=
new
Regex(matchExpression, RegexOptions.IgnoreCase
|
RegexOptions.Singleline
|
RegexOptions.CultureInvariant
|
RegexOptions.Compiled);
if
(regEx.IsMatch(urlToTransfer))
{
//
rawUrl = Regex.Replace(urlToTransfer, match, replace);
rawUrl
=
Globals.GetApplicationPath()
+
"
/Con001_ProjectManage/Job/viewjob.aspx
"
;
}
return
rawUrl;
}
/**/
///
<summary>
///
针对Transfer ViewCompany.aspx页面进行优化
///
</summary>
private
string
OptimizeTransferViewCompany(
string
rawUrl)
{
HttpContext context
=
HttpContext.Current;
string
urlToTransfer
=
context.Request.RawUrl;
string
match
=
@"
Jobs\/([a-fA-F0-9]{32}|([a-fA-F0-9]{8})-([a-fA-F0-9]{4})-([a-fA-F0-9]{4})-([a-fA-F0-9]{4})-([a-fA-F0-9]{12}))\/viewcompany.aspx
"
;
//
string replace = "Con001_ProjectManage/Job/viewcompany.aspx?id=$1";
//
解决大小写问题
urlToTransfer
=
urlToTransfer.ToLower();
match
=
match.ToLower();
string
matchExpression
=
Globals.GetApplicationPath()
+
match;
Regex regEx
=
new
Regex(matchExpression, RegexOptions.IgnoreCase
|
RegexOptions.Singleline
|
RegexOptions.CultureInvariant
|
RegexOptions.Compiled);
if
(regEx.IsMatch(urlToTransfer))
{
//
如果请求路径符合正则表达式
//
rawUrl = Regex.Replace(urlToTransfer, match, replace);
rawUrl
=
Globals.GetApplicationPath()
+
"
Con001_ProjectManage/Job/viewcompany.aspx
"
;
}
return
rawUrl;
}
另外还要修改一下Web.config文件,如:
<
add
siteMapFile
="~/App_Data/Job.sitemap"
name
="JobXmlSiteMapProvider"
type
="CSDN.Job.Components.JobXmlSiteMapProvider, CSDN.Job.Components"
/>
查看全文
相关阅读:
JS实现动态生成表格并提交表格数据向后端 表格中数据转为json
JS 添加和删除HTML 标签
操作系统杂碎
bootstrap3级下拉菜单 及 CSS实现三级下拉菜单分析
jquery获取复选框被选中的值
Mac 命令行启动并连接Redis
抓包工具不抓包的话记得看看还有没有没关的代理
Mac OS Sierra 安装PHP扩展 Operation not permitted
导航栏对于UIScrollview以及子类所做的一些事
探索static的用处
原文地址:https://www.cnblogs.com/chenjunbiao/p/1760253.html
最新文章
【转】linux 必须掌握的60个命令
管道及命名管道的区别
extern "C" {} 来沟通C和C++
homework-07
homework-05 服务器与客户端
homework-02 一坑到底的最大和联通图
homework-01 博客记录
OpenCV2.4.6与vs2008配置问题
JQuery——基础
asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
热门文章
发现局域网主机
数据库基础——关系的完整性
数据库——系统模式
数据库——数据模型
数据库基础——事务
AJAX
MySQL,Oracle,SQL Server——选取前10条——语法差异
数据加密——加密算法
JQery 获取table中 点击的元素 例子
js读取解析JSON数据
Copyright © 2011-2022 走看看