首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

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

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++)


                        {
                                //   在利用网页地址与拆解的QueryString去寻找节点
                                smn   =   base.FindSiteMapNode(sPage   +   "? "   +   aQuery[i]);
                                if   (smn   !=   null)
                                {
                                        //   找到了就离开循环
                                        break;
                                }
                        }
                        if   (smn   ==   null)
                        {
                                //   如通过网页地址加上QueryString,还是找不到,就直接返回网页地址的节点,去除QueryString
                                smn   =   base.FindSiteMapNode(sPage);
                        }
                }
                //   将节点丟出去给SiteMapPath   WebControl   Or   TreeView   WebControl
                return   smn;
        }
}
 

Web.Config
 
<configuration>
        <system   .web>
                <sitemap   defaultProvider= "mySiteMapProvider "   enabled= "true ">
                        <providers>
                                <add   name= "mySiteMapProvider "   type= "mySiteMapProvider "   siteMapFile= "web.sitemap "   />
                        </providers>
                </sitemap>
        </system>  
</configuration>

[解决办法]
首先,新建一个文件mySiteMapProvider.cs,把内容拷贝进去。

然后打开Web.Config,照着内容修改。

最后,使用server.mappath来找路径,看看是不是你要的结果。
[解决办法]
XMLDir1=Server.MapPath( " ") + "\\TradeElectUseXML\\ ";

------解决方案--------------------


XMLDir1=Server.MapPath( "TradeElectUseXML\ ");
[解决办法]
如果web.sitemap文件中没有查询参数的话,默认应该就是可以的.

热点排行