【问题标题】:Is there any way to use XmlSiteMapProvider within WinForm/Console/VSTest application?有没有办法在 WinForm/Console/VSTest 应用程序中使用 XmlSiteMapProvider?
【发布时间】:2010-09-12 13:30:36
【问题描述】:

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

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

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

我觉得正确的解决方案是编写另一个提供程序。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多