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"
/>
查看全文
相关阅读:
django创建项目,一个简单的登录。
MySQL下载与安装
查看拉去代码时候的git账号密码
Springmvc-组件
转发与重定向
springMVC-常用注解
springMVC-请求参数绑定
SpringMVC-RequestMapping注解
JAVA-异常处理
springMVC-入门案例
原文地址:https://www.cnblogs.com/chenjunbiao/p/1760253.html
最新文章
LCA
退役前目标
std查找器
hdu 3030
hdu 3015
树状数组
hdu 2688
hdu 1561
hdu 2159
lis nlogn算法
热门文章
kmp
hdu 2844
背包问题的二进制优化
django模板标签{% for %}的使用(含forloop用法)
DOC命令框进入指定文件夹
MySQL 服务无法启动 请键入 NET HELPMSG 3523 以获得更多的帮助
Ajax
mysql数据库数据迁移操作
多表关联创建增删改查,一对一,一对多,多对多
mysql下载安装配置
Copyright © 2011-2022 走看看