有没有办法在WinForm / Console / VSTest应用程序中使用XmlSiteMapProvider?

时间:2008-09-23 22:20:35

标签: asp.net unit-testing navigation sitemap provider

我想知道在非asp.net应用程序中是否有使用标准XmlSiteMapProvider的解决方法,例如WinForm / Console,或者在我的情况下,VS单元测试。

以下代码失败,因为它无法在私有.sitemap方法中创建GetConfigDocument文件的路径。

XmlSiteMapProvider provider = new XmlSiteMapProvider();
NameValueCollection providerAttributes = new NameValueCollection();
providerAttributes.Add("siteMapFile", "Web.sitemap");
provider.Initialize("XmlSiteMapReader", providerAttributes);
provider.BuildSiteMap();

我认为正确的解决方案是编写另一个提供商。

1 个答案:

答案 0 :(得分:2)

我不明白为什么不。它只是一个实现接口的提供者。您可能不需要许多功能,但您可以访问它为您提供的功能。您的WinForms屏幕可以简单地使用Urls进行标识,以便您可以确定层次结构中的位置。

您可能需要做的是创建提供程序的自定义实现,因为它将使用HttpContext获取当前Web请求的Url以识别当前位置,同时您需要以不同方式获取该值。这可能是棘手的,因为您的WinForm应用程序可能会在时间显示多个窗口。如果您知道一次只显示一个窗口,则可以使用在访问SiteMap API之前设置的静态值。

现在,如果必须完成所有工作,则必须质疑使用API​​的价值。可能没有足够的好处使它值得。