日期:2014-05-20  浏览次数:20408 次

SiteMapPath无法正确指到带QueryString的路径..有方法,但不会用..求达人告诉 谢谢~

SiteMapPath无法正确指到带QueryString的路径,下面的说法据说能够实现它,但是我不会用...到底怎么用这个方法呢?

====================================
SiteMapPath   WebControl   可以在ASP.Net2.0开发中轻松的实现网页路径功能,但是当带有多个QueryString时,并且指定路径时则带有一个参数,则无法正常找到指定的正确路径。  

其实很简单,我们只要重载   (override)   XmlSiteMapProvider.SiteMapNode   FindSiteMapNode   (string   rawUrl)   这个方法   (Method)   就可以了!  

mySiteMapProvider.cs与Web.config文件如下:  

 
mySiteMapProvider.cs
 
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>
///   Summary   description   for   mySiteMapProvider
///   </summary>
public   class   mySiteMapProvider   :   XmlSiteMapProvider
{
        public   mySiteMapProvider()
        {
                //
                //   TODO:   Add   constructor   logic   here
                //
        }
        public   override   SiteMapNode   FindSiteMapNode(string   rawUrl)
        {
                //   Version   1.0
                //   2006-07-28   14:01
                //   By   Mars
               
                //   先利用原有的FindSiteMapNode()方法,寻找传入的网址,是否有该节点
                SiteMapNode   smn   =   base.FindSiteMapNode(rawUrl);
                //   利用系统内置FindSiteMapNode()没有找到
                if   (smn   ==   null)
                {
                        string[]   arrUrl   =   rawUrl.Split( '? ');
                        string   sPage   =   arrUrl[0];   //   取得网页地址
                        string   sQuery   =   string.Empty;
                        if   (arrUrl.Length   > =   2)
                        {
                                sQuery   =   arrUrl[1];   //   取得QueryString
                        }
                        string[]   aQuery   =   sQuery.Split( '& ');         //   将QueryString拆解
                        for   (int   i   =   0;   i   <   aQuery.Length;   i++)