问题是我在一个名为 EditableSiteMapProvider 的类中有一个覆盖 BuildSiteMap() 函数,该函数用于通过删除或添加新节点来编辑站点地图。当我执行 base.BuildSiteMap(); 时,它给了我一个错误“XmlSiteMapProvider 未初始化。首先调用 Initialize() 方法。
public override SiteMapNode BuildSiteMap()
{
SiteMapNode result = base.BuildSiteMap();
//if (_loadFileNodes())
//{
// lock(objLock)
// {
// base.Clear();
// result = base.BuildSiteMap();
// _dataFixInProgress = false;
// }
//}
if (!_dataFixInProgress)// && !_dataIsFixed)
{
此函数从函数 Refresh() 调用,如下所示:
public void Refresh(){
Clear();
this._loadFileNodes();
BuildSiteMap();
}
这两个函数在 EditableSiteMapProvider 类中,我使用此函数从另一个页面(如 files.aspx)刷新站点地图,该页面用于将文件上传到数据库,数据库也会在导航栏上显示它们的名称。为此,我通过调用 files.aspx.cs 的页面加载上的刷新函数来刷新站点地图,该函数查看所有上传的新文件并从站点地图中添加或删除文件链接。
protected void Page_Load(object sender, EventArgs e)
{
DevExpress.Web.ASPxSiteMapControl.ASPxSiteMapControl smc = (DevExpress.Web.ASPxSiteMapControl.ASPxSiteMapControl)this.Master.FindControl("ASPxSiteMapControl1");
Proj.Web.EditableXmlSiteMapProvider sitemap = new Proj.Web.EditableXmlSiteMapProvider();
sitemap.Refresh();
}